3
これはいつか動作していたと思いますが、xpathはnullを返します。誰かが私の愚かなミスをコードに従うのを助けることができますか?
または、setNamespaceAware(false)の後でもNamespaceContextを提供する必要がありますか?xpathのdefaultNamespaceでXPathがnullを返す
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(false);
domFactory.setIgnoringComments(true);
domFactory.setIgnoringElementContentWhitespace(true);
try {
Document doc = domFactory.newDocumentBuilder().parse(new File("E:/Temp/test.xml"));
XPath xp = XPathFactory.newInstance().newXPath();
NodeList nl = (NodeList) xp.evaluate("//class", doc, XPathConstants.NODESET);
System.out.println(nl.getLength());
}catch (Exception e){
e.printStackTrace();
}
XMLドキュメントはこちらです:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.example.com/schema">
<class />
<class />
</root>
これを(Java 1.6で)実行すると、「2」が出力されます。 –
ここの変数は、 'domFactory.newDocumentBuilder()。parse(file)'によって選択されたデフォルトのパーサー実装です。 –
ああ、神様、私は怒っています。私はJava 1.6ではテストしていますが、0を取得しています。 – WSK