我正在尝试将dom4j与我的应用程序一起使用,我解决了解析以下xml文件的问题:
<menu xmlns="http://example.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://example.com/ my-schema.xsd">
<content>
<caption>aaa</caption>
<description>vvvv</description>
</content>
</menu>
我初始化了dom4j解析器,现在我正在尝试检索描述节点:
Node node = document.selectSingleNode( "/menu/content/description" );
(我知道我可以使用迭代器,但xpath更适合我)
我有null
而不是描述节点。
当我试图弄清楚什么是错的时候,我从xml中移除了模式声明(所以开头只有简单的<menu>
)然后完全正常。
我宁愿拥有xsd声明,所以我做错了什么?
提前致谢!
答案 0 :(得分:0)
xpath失败的原因是它不支持名称空间。
试试这个:
/*[local-name()='menu' and namespace-uri()='http://example.com/']/*[local-name()='content' and namespace-uri()='http://example.com/']/*[local-name()='description' and namespace-uri()='http://example.com/']
更好的是,下载DanSharp Xml Viewer,您可以为自己生成这些路径。
http://www.bizbert.com/bizbert/2007/11/25/DanSharp+XmlViewer.aspx