我正在尝试从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
我做错了什么
答案 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']