Получил значение 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