XML的过滤与提取
我有一个XML的过滤与提取,xml,xpath,xml-parsing,Xml,Xpath,Xml Parsing,我有一个XML文件,如下所示: <article> <section> <H4>Table of Contents </H4> <p> Content_ID_1 </p> <p> content_ID_2 </p> <p> content_ID_3 </p> </section> <secti
XML
文件,如下所示:
<article>
<section>
<H4>Table of Contents </H4>
<p> Content_ID_1 </p>
<p> content_ID_2 </p>
<p> content_ID_3 </p>
</section>
<section>
<p>Content_ID_1 </p>
<p>content_ID_2 </p>
</section>
</article>
显然,这将从目录部分返回第一个content\u ID\u 2
。有没有办法使用XPath
过滤掉第一个部分,让它只返回第二个部分的值
提前感谢。-simak您可以尝试:
"//article//section[not(H4)]//p[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'content_id_2') ]/text()";
[not(H4)]仅选择那些没有H4
节点作为其直接子节点的部分
节点,这里就是这种情况
希望这能有所帮助。如果总是第二个,那么是的,
//文章//部分[2]
会过滤到第二个部分,剩下的路径应该会正常工作。感谢您的回复。但很抱歉,这不起作用-它实际上返回NULL。不幸的是,它可能总是第二个部分,也可能不是。如何确定要筛选哪个部分
"//article//section[not(H4)]//p[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'content_id_2') ]/text()";