KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > xmldb > common > xml > queries > test > XPathTest


1 package org.xmldb.common.xml.queries.test;
2 /*
3  * The XML:DB Initiative Software License, Version 1.0
4  *
5  *
6  * Copyright (c) 2000-2003 The XML:DB Initiative. All rights
7  * reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution,
22  * if any, must include the following acknowledgment:
23  * "This product includes software developed by the
24  * XML:DB Initiative (http://www.xmldb.org/)."
25  * Alternately, this acknowledgment may appear in the software itself,
26  * if and wherever such third-party acknowledgments normally appear.
27  *
28  * 4. The name "XML:DB Initiative" must not be used to endorse or
29  * promote products derived from this software without prior written
30  * permission. For written permission, please contact info@xmldb.org.
31  *
32  * 5. Products derived from this software may not be called "XML:DB",
33  * nor may "XML:DB" appear in their name, without prior written
34  * permission of the XML:DB Initiative.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the XML:DB Initiative. For more information
52  * on the XML:DB Initiative, please see <http://www.xmldb.org/>.
53  */

54
55 import org.w3c.dom.Document JavaDoc;
56 import org.w3c.dom.NodeList JavaDoc;
57 import org.xmldb.common.xml.queries.*;
58
59 import javax.xml.parsers.DocumentBuilder JavaDoc;
60 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
61
62
63 /**
64  * @version $Revision: 1.3 $ $Date: 2003/04/24 14:14:10 $
65  * @author <a HREF="http://www.softwarebuero.de">SMB</a>
66  */

67 public class XPathTest {
68
69     public static void main(String JavaDoc[] args) throws Exception JavaDoc {
70
71 // System.getProperties().put( "org.xmldb.common.xml.queries.XPathQueryFactory",
72
// "org.xmldb.common.xml.queries.xt.XPathQueryFactoryImpl");
73

74         XPathQueryFactory factory = XPathQueryFactory.newInstance();
75
76         DocumentBuilderFactory JavaDoc builderFactory = DocumentBuilderFactory.newInstance();
77         DocumentBuilder JavaDoc docBuilder = builderFactory.newDocumentBuilder();
78         Document JavaDoc doc = docBuilder.parse(args[0]);
79
80         long start = System.currentTimeMillis();
81         XPathQuery query = factory.newXPathQuery();
82         System.out.println(query.getClass().getName());
83         query.setQString("/*");
84         System.out.println("init: " + (System.currentTimeMillis() - start));
85
86         start = System.currentTimeMillis();
87         XObject result = query.execute(doc);
88         System.out.println("execute: " + (System.currentTimeMillis() - start));
89
90         printResult(result);
91
92         result = query.execute(doc);
93         printResult(result);
94     }
95
96
97     protected static void printResult(XObject result) throws Exception JavaDoc {
98         if (result == null) {
99             System.out.println("XPath query: result: null");
100         } else {
101             System.out.print("XPATH query: result: ");
102             // cast the query result to
103
switch (result.getType()) {
104                 case XObject.CLASS_BOOLEAN:
105                     System.out.println("(Boolean): " + result.bool());
106                     break;
107                 case XObject.CLASS_NUMBER:
108                     System.out.println("(Number): " + result.num());
109                     break;
110                 case XObject.CLASS_STRING:
111                     System.out.println("(String): " + result.str());
112                     break;
113                 case XObject.CLASS_RTREEFRAG:
114                     System.out.println("(DocumentFragment): -");
115                     break;
116                 case XObject.CLASS_NODESET:
117                     NodeList JavaDoc nodeList = result.nodeset();
118                     System.out.println("(NodeList): " + nodeList.getLength() + " Entries");
119
120                     for (int i = 0; i < nodeList.getLength(); i++) {
121                         System.out.print(i + 1 + " Entry: ");
122                         System.out.println(" value=" + nodeList.item(i).getNodeName());
123                     }
124                     break;
125                 default:
126                     System.out.println("(Unknown): -");
127                     break;
128             }
129         }
130     }
131
132 }
133
Popular Tags