1

我正在尝试在我的应用程序中使用 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 声明,那我做错了什么?

提前致谢!

4

1 回答 1

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

于 2011-08-16T11:21:14.353 回答