8

Java での XML 作業に DOM4j を使用しています。私の xml は次のようになります。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<abcd name="ab.catalog" xmlns="http://www.xyz.com/pqr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xyz.com/pqr ./abc.xyz.xsd">             
<efg>
......
</efg>
<efg>
.....
</efg>
</abcd>

それから、

List<Node>list = document.selectNodes("/abcd/efg");

リスト 0 のサイズを取得します。xmlで指定された名前空間が原因だと思います。私はたくさん試しましたが、成功しませんでした。

4

2 に答える 2

14

XPath 式のプレフィックスのない要素名は、名前空間にない要素を参照しxmlns="..."ます。ドキュメントで宣言された「デフォルト」の名前空間は考慮されません。XPath エンジンで名前空間のプレフィックスを宣言し、そのプレフィックスを式で使用する必要があります。DOM4J javadocs に触発された例を次に示します。

Map uris = new HashMap();
uris.put("pqr", "http://www.xyz.com/pqr");
XPath xpath = document.createXPath("/pqr:abcd/pqr:efg");
xpath.setNamespaceURIs(uris);
List<Node> nodes = xpath.selectNodes(document);
于 2013-01-14T13:18:49.927 に答える
-5

コードを変更してください:

List<Node>list = document.selectNodes("//abcd/efg");
于 2013-11-14T16:29:55.673 に答える