从XML过滤和提取

时间:2013-06-25 10:12:45

标签: 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>
   <section>
      <p>Content_ID_1 </p>
      <p>content_ID_2 </p>
   </section>
</article>

我正在尝试使用Content_ID从第二部分中提取Xpath 1和2。显然,Section1是第一个命中,结果从目录中返回。

我给出的命令是:

"//article//section//p[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'content_id_2') ]/text()";

显然,这会从目录部分返回第一个content_ID_2。有没有办法使用XPath我可以过滤掉第一部分并让它只返回第二部分的值?

提前致谢。
-simak

2 个答案:

答案 0 :(得分:0)

您可以尝试:

"//article//section[not(H4)]//p[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'content_id_2') ]/text()";

[not(H4)] 仅选择那些没有section节点作为其直接子节点的H4个节点,这就是这种情况。< / p>

希望有所帮助。

答案 1 :(得分:0)

如果它总是第二个,那么是,//article//section[2]过滤到第二部分,其余路径应该照常工作。