我必须从下面的xml中提取文本'testpoc'。 请通过提供相关的xpath来帮助我。
'<am:entry>` `
` <am:content type="application/xml">`
`<s:series-poc>`
'<s:c_series.c_id>testpoc</s:c_series.c_id>'
</s:series-poc>
</am:content>
</am:entry>
我尝试过使用以下路径,但没有运气。
A)( “// * [本地名称()= 'c_series.c_id'] /文本()”),
B)( “/进入/内容/串联POC / c_series.c_id /文本()”),
C)( “/进入/内容/串联POC // * [本地名称()= 'c_series.c_id'] /文本()”)
感谢您在这方面的所有支持。
答案 0 :(得分:0)
您的XPath API应该提供一种将名称空间前缀绑定到URI的方法,例如
XPath.declareNamespace("am", "http://something.com/");
XPath.declareNamespace("s", "http://something.else.com/");
然后,您可以选择内容
/am:entry/am:content/s:c_series.c_id
如果您无法以这种方式绑定前缀,则依赖于local-name()
的谓词是最后的手段。
您使用的是什么API?
答案 1 :(得分:0)
为您提供详细信息,同时查看下面的xml -
使用的命名空间: 的xmlns:C =&#34; HTTP://iddn.abc.com/ns/core"的xmlns:F =&#34; HTTP://iddn.abc.com/ns/fields"的xmlns:A =&#34; HTTP://iddn.abc.com/ns/assets"的xmlns:S =&#34; HTTP://iddn.abc.com/ns/search"&GT;
<atom:entry>
<atom:content type="application/vnd">
<s:series-item-abc-poc>
<s:c_series.c_id>testpoc</s:c_series.c_id>
</s:series-item-abc-poc>
</atom:content>
</atom:entry>
我尝试按照您的建议声明命名空间,但是,我无法获取s:c_series.c_id标记的值。这就是我做的 -
xpath = XPathFactory.newInstance()。newXPath();
XPath.declareNamespace(&#34; s&#34;,&#34; http://iddn.abc.com/ns/search&#34;);
expr = xpath.compile(&#34; // atom:entry / atom:content / s:series-item-abc-poc / s:c_series.c_id / text()&#34;);
如果我在这里缺少某些东西,请告诉我。
感谢您对此支持。