隨筆-7  評(píng)論-15  文章-0  trackbacks-0

          一、使用eclipse新建一個(gè)java project
          二、把saxon的jar包放入classpath(我用的jar包是saxon9ee.jar)
          三、新建package,然后新建一個(gè)xml文件(cd_catalog.xml),其內(nèi)容如下:
          <?xml version="1.0" encoding="ISO-8859-1"?>
              <CATALOG>
                   <CD>
                        <TITLE>Empire Burlesque</TITLE>
                        <ARTIST>Bob Dylan</ARTIST>
                        <COUNTRY>USA</COUNTRY>
                         <COMPANY>Columbia</COMPANY>
                        <PRICE>10.90</PRICE>
                        <YEAR>1985</YEAR>
                   </CD>
                   <CD>
                        <TITLE>Hide your heart</TITLE>
                        <ARTIST>Bonnie Tyler</ARTIST>
                        <COUNTRY>UK</COUNTRY>
                        <COMPANY>CBS Records</COMPANY>
                        <PRICE>9.90</PRICE>
                        <YEAR>1988</YEAR>
                   </CD>
                   <CD>
                        <TITLE>Greatest Hits</TITLE>
                        <ARTIST>Dolly Parton</ARTIST>
                        <COUNTRY>USA</COUNTRY>
                        <COMPANY>RCA</COMPANY>
                        <PRICE>9.90</PRICE>
                        <YEAR>1982</YEAR>
                   </CD>
                   <CD>
                        <TITLE>Still got the blues</TITLE>
                        <ARTIST>Gary Moore</ARTIST>
                        <COUNTRY>UK</COUNTRY>
                        <COMPANY>Virgin records</COMPANY>
                        <PRICE>10.20</PRICE>
                        <YEAR>1990</YEAR>
                   </CD>
                   <CD>
                        <TITLE>Eros</TITLE>
                        <ARTIST>Eros Ramazzotti</ARTIST>
                        <COUNTRY>EU</COUNTRY>
                        <COMPANY>BMG</COMPANY>
                        <PRICE>9.90</PRICE>
                        <YEAR>1997</YEAR>
                   </CD>
                   <CD>
                        <TITLE>One night only</TITLE>
                        <ARTIST>Bee Gees</ARTIST>
                        <COUNTRY>UK</COUNTRY>
                        <COMPANY>Polydor</COMPANY>
                        <PRICE>10.90</PRICE>
                        <YEAR>1998</YEAR>
                   </CD>
                   <CD>
                        <TITLE>Sylvias Mother</TITLE>
                        <ARTIST>Dr.Hook</ARTIST>
                        <COUNTRY>UK</COUNTRY>
                        <COMPANY>CBS</COMPANY>
                        <PRICE>8.10</PRICE>
                        <YEAR>1973</YEAR>
                   </CD>
                   <CD>
                          <TITLE>Maggie May</TITLE>
                        <ARTIST>Rod Stewart</ARTIST>
                        <COUNTRY>UK</COUNTRY>
                        <COMPANY>Pickwick</COMPANY>
                        <PRICE>8.50</PRICE>
                        <YEAR>1990</YEAR>
                   </CD>
                   <CD>
                         <TITLE>Romanza</TITLE>
                        <ARTIST>Andrea Bocelli</ARTIST>
                        <COUNTRY>EU</COUNTRY>
                        <COMPANY>Polydor</COMPANY>
                        <PRICE>10.80</PRICE>
                        <YEAR>1996</YEAR>
                 </CD>
                   <CD>
                        <TITLE>When a man loves a woman</TITLE>
                        <ARTIST>Percy Sledge</ARTIST>
                        <COUNTRY>USA</COUNTRY>
                        <COMPANY>Atlantic</COMPANY>
                        <PRICE>8.70</PRICE>
                        <YEAR>1987</YEAR>
                   </CD>
             </CATALOG>
                  
          四、新建一個(gè)java class(XqueryTest.java)

          import java.io.IOException;
          import java.util.Properties;

          import javax.xml.parsers.DocumentBuilder;
          import javax.xml.parsers.DocumentBuilderFactory;
          import javax.xml.parsers.ParserConfigurationException;
          import javax.xml.transform.OutputKeys;
          import javax.xml.transform.Transformer;
          import javax.xml.transform.TransformerConfigurationException;
          import javax.xml.transform.TransformerException;
          import javax.xml.transform.TransformerFactory;
          import javax.xml.transform.dom.DOMSource;
          import javax.xml.transform.stream.StreamResult;

          import org.w3c.dom.Document;
          import org.xml.sax.SAXException;

          import net.sf.saxon.Configuration;
          import net.sf.saxon.dom.*;
          import net.sf.saxon.query.DynamicQueryContext;
          import net.sf.saxon.query.StaticQueryContext;
          import net.sf.saxon.query.XQueryExpression;
          import net.sf.saxon.trans.XPathException;

          public class XqueryTest {
           /**
            * 執(zhí)行查詢
            */
           public static void select(){
            //文件
            String fileString = "src/study/xquery/cd_catalog.xml";
            //查詢語句
            String query = " for $s in //CD/TITLE "
              + " return $s";
            //生產(chǎn)文檔對(duì)象
            Document document = getDocument(fileString);
            Configuration configuration = new Configuration();
            StaticQueryContext context = new StaticQueryContext(configuration, false);
            //查詢表達(dá)式對(duì)象
            XQueryExpression expression = null;
            try {
             expression = context.compileQuery(query);
             DynamicQueryContext context2 = new DynamicQueryContext(configuration);
             context2.setContextItem(new DocumentWrapper(document,null,configuration));
             
             final Properties props = new Properties();
                      props.setProperty(OutputKeys.METHOD, "xml");
                      props.setProperty(OutputKeys.INDENT, "yes");
                      //執(zhí)行查詢,并輸出查詢結(jié)果
                      expression.run(context2, new StreamResult(System.out), props);
            } catch (XPathException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }
            
           }
           /**
            * 生產(chǎn)文檔對(duì)象
            *
            * @param xml   文件名
            * @return
            */
           public static Document getDocument(String xml){
            DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder;
            Document document = null;
            try {
             builder = builderFactory.newDocumentBuilder();
             document = builder.parse(xml);
            } catch (ParserConfigurationException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            } catch (SAXException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }
            document.normalize();
            return document;
           }
           /**
            * 輸入生成的文檔內(nèi)容
            *
            * @param doc
            */
           public static void output(Document doc){
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = null;
            try {
             transformer = factory.newTransformer();
             Properties properties = transformer.getOutputProperties();
             properties.setProperty(OutputKeys.INDENT, "yes");
                      properties.setProperty(OutputKeys.ENCODING, "GB2312");
                      properties.setProperty(OutputKeys.METHOD, "xml");
                      properties.setProperty(OutputKeys.VERSION, "1.0");
                      transformer.setOutputProperties(properties);
                     
                      DOMSource source = new DOMSource(doc);
                      StreamResult result = new StreamResult(System.out);
                      transformer.transform(source, result);
             
            } catch (TransformerConfigurationException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            } catch (TransformerException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }
           }
           public static void main(String[] args) {
            select();
           }
          }


          五、運(yùn)行結(jié)果
          <?xml version="1.0" encoding="UTF-8"?>
          <TITLE>Empire Burlesque</TITLE>
          <TITLE>Hide your heart</TITLE>
          <TITLE>Greatest Hits</TITLE>
          <TITLE>Still got the blues</TITLE>
          <TITLE>Eros</TITLE>
          <TITLE>One night only</TITLE>
          <TITLE>Sylvias Mother</TITLE>
          <TITLE>Maggie May</TITLE>
          <TITLE>Romanza</TITLE>
          <TITLE>When a man loves a woman</TITLE>
          posted on 2009-10-07 17:14 腳踏實(shí)地 閱讀(1184) 評(píng)論(0)  編輯  收藏 所屬分類: start XQuery
          主站蜘蛛池模板: 闻喜县| 阿克苏市| 江口县| 祁门县| 南安市| 江华| 绥中县| 兴安县| 镇远县| 洛南县| 苍溪县| 瓮安县| 邳州市| 安西县| 都江堰市| 邵东县| 临朐县| 泊头市| 会理县| 阳原县| 潮安县| 嘉义市| 剑阁县| 云林县| 青浦区| 陕西省| 鹤岗市| 明溪县| 双牌县| 平昌县| 城固县| 栾城县| 新巴尔虎右旗| 岐山县| 玛沁县| 江安县| 宜城市| 广水市| 北票市| 汾阳市| 元朗区|