我想操作具有默认命名空间但没有前缀的xml doc.有没有一种方法可以使用没有命名空间uri的xpath,就好像没有命名空间一样?
我相信如果我们将documentBuilderFactory的namespaceAware属性设置为false应该是可能的.但就我而言,它不起作用.
我的理解是不正确的还是我在代码中犯了一些错误?
这是我的代码:
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(false);
try {
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document dDoc = builder.parse("E:/test.xml");
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nl = (NodeList) xPath.evaluate("//author", dDoc, XPathConstants.NODESET);
System.out.println(nl.getLength());
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这是我的xml:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.mydomain.com/schema">
<author>
<book title="t1"/>
<book title="t2"/>
</author>
</root>
Run Code Online (Sandbox Code Playgroud) 我正在寻找最新的,内存效率和高性能的Java XML解析API.我需要解析3 MB到5 MB的XML文件.
我对此进行了谷歌搜索并了解了Sun Java Streaming XML Parser(SJSXP),而Woodstox比DOM和SAX快得多.两者都使用StAX API.*这些技术不支持架构验证.
Aalto XML处理器也实现了StAX API.
我没有找到关于这些技术的性能的具体发现.
哪一个在内存高效,高性能和易用性方面最佳?