Пространства имен JAXP XPathFactory - PullRequest
1 голос
/ 03 декабря 2010

Я пытаюсь получить один узел из XML-документа в Android (Java).

<?xml version="1.0" encoding="utf-8" ?>
<config:Manifest xmlns:config="http://leaflabs.com/manifest.config.xsd"> 
  <config:Text config:name="siteowner" config:desc="Site owner" config:transform="title"/>
  <config:Text config:name="siteowner1" config:desc="Site owner" config:transform="title"/>
</config:Manifest>

XPATH

config:Manifest/config:Text[@config:name='siteowner']

Я использую JAXP XPathFactory.Проблема, которую я получаю, заключается в том, чтобы каждый раз возвращать значение null.

Я убедился, что мой xpath указан правильно, что для моего конструктора документов NamespaceAware задано значение true, и я даже выполнил Пример (внизу).страницы), которые реализуют NamespaceContext, но я все еще ничего не получаю.

Я посмотрел на сообщение stackoverflow, но никто не ответил парню Ссылка

Что я делаю не так

Ответы [ 2 ]

4 голосов
/ 13 февраля 2011

Проблема в вашем коде заключается в том, что фабрика не знает пространства имен. Существует еще один поток, решающий эту проблему: Как использовать XPath в документах xml, имеющих пространство имен по умолчанию

Предлагаю попробовать что-то вроде этого,

XPath xPath = . XPathFactory.newInstance () newXPath (); xPath.setNamespaceContext (новый MyNamespaceContext ());

0 голосов
/ 03 декабря 2010

Не уверен на 100%, но я полагаю, что вам нужен токен перед оператором xpath:

Я бы попробовал следующее:

$ this / config: Manifest / config: Text[@config: name = 'siteowner']

И если это не сработает, попробуйте это:

/ config: Manifest / config: Text [@config: name = 'siteowner']

И если ни одна из этих работ не работает, попробуйте следующее:

// config: Manifest / config: Text [@config: name = 'siteowner']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...