我对 XPath 非常陌生,我正在创建一个 XPath 表达式以检索以下 xml 的多个元素
<ol>
<li>
<a data- key="abc(/parent)" value="superval)">Parent</a>
<ol>
<li>
<a data-key="abc(/parent/1)" data-value="parent-val">Parent/1</a>
<ol>
<li>
<a data-key="abc(/parent/1/1)" data-value="xyz">Parent/1/1</a>
</li>
<li>
<a data-key="abc(/parent/1/2)" data-value="xyz">Parent/1/2</a>
</li>
<li>
<a data-key="abc(/parent/1/3)" data-value="xyz">Parent/1/3</a>
</li>
<li>
<a data-key="abc(/parent/1/4)" data-value="xyz">Parent/1/4</a>
</li>
</ol>
</li>
</ol>
</li>
<li>
<a data-key="bcd/(parent1)" value="superval">Parent1</a>
<ol>
<li>
<a data-key="bcd(/parent1/1)" data-value="parent-val">Parent1/1</a>
<ol>
<li>
<a data-key="bcd(/parent1/1/1)" data-value="xyz">Parent1/1/1</a>
</li>
<li>
<a data-key="bcd(/parent1/1/2)" data-value="xyz">Parent1/1/2</a>
</li>
<li>
<a data-key="bcd(/parent1/1/3)" data-value="xyz">Parent1/1/3</a>
</li>
<li>
<a data-key="bcd(/parent1/1/4)" data-value="xyz">Parent1/1/4</a>
</li>
</ol>
</li>
</ol>
</li>
</ol>
上面的xml只是一个例子,每个父级可以包含多个子值。parent/1/1/1
我需要搜索具有从 say ( ) 到 ( )开始的数据键值的元素parent/1/1/4
,并为这些键提取value
与其关联的属性的值。数据键值也可以跨越不同的父级,例如 ( parent/1/1/1
) 到 ( parent/1/1/2
)。
我需要为上述两种情况创建 XPath 表达式。我试过使用这个 XPath 表达式
//*[@data-key='abc(/parent/1/1/1)']
但它只给了我一个<a>
元素,因为我需要一系列元素。我对 XPath 完全陌生,所以这方面的任何帮助都会很有用。
提前谢谢了。阿希什