当在 / data / title 上应用Xpath表达式时,显示的结果为“所有连接”,“前向详细信息”,“前向详细信息”,“前向详细信息”,“转发详细信息” ','ABCD',......等。
只有当/ title为'Forward Detail'或''Forward Details'时,我的xpath表达式才必须列出......
<?xml version="1.0" encoding="UTF-8"?>
<data>
<title>All the connections</title>
<List>
<Listitem>
<Price>P9909</Price>
</Listitem>
</List>
<title>Forward Detail</title>
<List>
<Listitem>
<Price>P45</Price>
</Listitem>
<Listitem>
<Price>P98</Price>
</Listitem>
<Listitem>
<Price>P68</Price>
</Listitem>
</List>
<title>Forward Details</title>
<List>
<Listitem>
<Price>P452</Price>
</Listitem>
<Listitem>
<Price>P983</Price>
</Listitem>
</List>
<title>Forward Detail</title>
<List>
<Listitem>
<Price>P4501</Price>
</Listitem>
<Listitem>
<Price>P909</Price>
</Listitem>
<Listitem>
<Price>P899</Price>
</Listitem>
</List>
<title>Forward Details</title>
<List>
<Listitem>
<Price>P4522</Price>
</Listitem>
<Listitem>
<Price>P98311</Price>
</Listitem>
</List>
在这个输入中,我必须提取“前向细节”和“前向细节”的价格。我不得不忽略其余部分。
请帮我构建Xpath。我正在使用Xpath 1.0
由于 RAMM
答案 0 :(得分:3)
尝试下一个命令是否适合您:
/data/title[text() = "Forward Detail" or text() = "Forward Details"]/following-sibling::*[1]/descendant::Price
我的结果:
<Price>P45</Price>
<Price>P98</Price>
<Price>P68</Price>
<Price>P452</Price>
<Price>P983</Price>
<Price>P4501</Price>
<Price>P909</Price>
<Price>P899</Price>
<Price>P4522</Price>
<Price>P98311</Price>
答案 1 :(得分:2)
你需要一个条件。类似于/data/title[text() == 'Forward Detail']
。
但是我怀疑你确实需要名单之前的名单,对吧?您的XML设计非常糟糕(它应该在内部而不是<List>
元素),但XPath足以应对。您需要查看sibling
轴和pos()
函数。
我必须自己查看文档,所以我只是将它作为社区维基;任何人都可以随意改写。