JAXP XPathFactory命名空间

时间:2010-12-03 14:33:25

标签: java android xml xpath

我正在尝试从android(java)中的xml doc中检索一个节点。

<?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,我甚至跟着Example (在页面底部)实现NamespaceContext但我仍然得不到任何东西。

我看了一下stackoverflow Post,但没有人回答这个人 Link

我做错了什么

2 个答案:

答案 0 :(得分:4)

代码中的问题是工厂不支持名称空间。还有另一个解决此问题的线程How to use XPath on xml docs having default namespace

建议你尝试这样的事情,

  

XPath xPath =   。XPathFactory.newInstance()newXPath();   xPath.setNamespaceContext(新   MyNamespaceContext());

答案 1 :(得分:0)

不是100%肯定,但我相信你需要在xpath语句前面加一个标记:

我会尝试以下方法:

$这个/配置中:Manifest /配置:文本[@config:名称= 'siteowner']

如果这不起作用,试试这个:

/配置中:Manifest /配置:文本[@config:名称= 'siteowner']

如果这些都不能尝试这个:

//配置中:Manifest /配置:文本[@config:名称= 'siteowner']