开发者

got null from xpath expression when using xsd schema with Dom4j

I'm trying to use dom4j 开发者_运维技巧with my application, and I approached a problem with parsing following XML file:

<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>

I initialized dom4j parser, and now I'm trying to retrieve description node:

Node node = document.selectSingleNode( "/menu/content/description" );

(I know I could use iterators, but xpath suits me better)

I've got null instead of the description node.

When I tried to figure out what's wrong, I removed schema declaration from xml (so there was only plain simple <menu> at the beginning) and then it worked perfectly fine.

I rather have that XSD declaration, so what am I doing wrong?

Thanks in advance!


The reason your xpath fails is that it is not namespace aware.

Try this one:

/*[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/']

Even better, download DanSharp Xml Viewer and you can generate these paths for yourself.

http://www.bizbert.com/bizbert/2007/11/25/DanSharp+XmlViewer.aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜