получил значение null из выражения xpath при использовании схемы xsd с Dom4j - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь использовать 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 Ответ

0 голосов
/ 16 августа 2011

Причиной сбоя вашего 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

...