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()";