Получил значение null из выражения xpath при использовании схемы xsd с Dom4j

Я пытаюсь использовать 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, так что я делаю не так?

Заранее спасибо!

1 ответ

Решение

Причина, по которой ваш 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

Другие вопросы по тегам