我试图在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文件中进行更快速查询的替代方法是什么?
答案 0 :(得分:0)
使用SAX,而不是DOM。因为SAX需要比DOM少得多的内存,因为SAX不像DOM那样构造XML数据的内部表示(树结构)。相反,SAX只是在读取数据时将数据发送到应用程序;然后,您的应用程序可以对其看到的数据执行任何操作。
详情请阅读。