8ce8db1f15d7368d3a4007d81ea22932603cf194
[tatoo.git] / tools / XPathEval.java
1 import javax.xml.xpath.*;
2 import org.xml.sax.*;
3 import org.w3c.dom.*;
4 import javax.xml.transform.*;
5 import javax.xml.transform.dom.*;
6 import javax.xml.transform.stream.*;
7
8 public class XPathEval {
9
10
11   public static void main(String args[]) {
12     try {
13
14
15       XPath xpath = XPathFactory.newInstance().newXPath();
16       String expression = args[1];
17       InputSource inputSource = new InputSource(args[0]);
18       long startTime = System.nanoTime();
19       NodeList nodes = (NodeList) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);
20       long evalTime = (System.nanoTime() - startTime) / 1000000;
21       Transformer serializer = TransformerFactory.newInstance().newTransformer();
22       serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
23       StreamResult o = new StreamResult(System.out);
24       startTime = System.nanoTime();
25       System.out.println("<xml_result num=\"1\">");
26       for(int i = 0; i < nodes.getLength(); i++){
27         Node n = nodes.item(i);
28         switch (n.getNodeType()) {
29         case Node.ATTRIBUTE_NODE:
30           System.out.print (n.getNodeName() + "=" + n.getNodeValue());
31           break;
32         default:
33           serializer.transform(new DOMSource(nodes.item(i)), o);
34           break;
35         };
36         System.out.println();
37       };
38       System.out.println("</xml_result>");
39       long printTime = (System.nanoTime() - startTime) / 1000000;
40       System.err.println("evaluation time: " + evalTime + "ms");
41       System.err.println("serialization time: " + printTime + "ms");
42     } catch (XPathException e) {
43       System.out.println (e.getCause());
44     } catch (Exception e) {
45       System.out.println(e);
46     };
47
48
49   }
50 }