use*_*932 6 java dom4j xml-namespaces
我在java中使用DOM4j进行XML工作,我的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>
Run Code Online (Sandbox Code Playgroud)
然后,
List<Node>list = document.selectNodes("/abcd/efg");
Run Code Online (Sandbox Code Playgroud)
得到列表零的大小.我觉得这是由于xml中指定的命名空间.我尝试了很多,但没有成功.
Ian*_*rts 11
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11545 次 |
| 最近记录: |