在java中使用xpath查询xml

时间:2013-06-22 06:09:26

标签: java xml dom xml-parsing

我试图在java中使用xpath对巨大的XML文件进行一些查询,这是我的代码:

         DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
         docBuilderFactory.setNamespaceAware(true);

         DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
         Document document = docBuilder.parse(new File("test.xml"));

         XPath xpath = XPathFactory.newInstance().newXPath();

         String xPath = "/*/*[@id='ABCD']/*/*";

         XPathExpression expr = xpath.compile(xPath);
         NodeList result = (NodeList)expr.evaluate(document, XPathConstants.NODESET);

代码的最后一行花了很多时间我不知道为什么,这个行程序在1秒内完成并且在40秒内完成。 我也尝试过XOM也没用。 在java中的巨大XML文件中进行更快速查询的替代方法是什么?

1 个答案:

答案 0 :(得分:0)

使用SAX,而不是DOM。因为SAX需要比DOM少得多的内存,因为SAX不像DOM那样构造XML数据的内部表示(树结构)。相反,SAX只是在读取数据时将数据发送到应用程序;然后,您的应用程序可以对其看到的数据执行任何操作。

详情请阅读。

http://docs.oracle.com/javase/tutorial/jaxp/sax/index.html