在XPath中无法匹配祖先的以下节点

时间:2017-03-08 16:32:52

标签: xml xpath

我有这样的XML:

<table>
<tr class="mergedrow">
<th scope="row"><a href="https://en.wikipedia.org/wiki/Telephone_numbers_in_Austria" title="Telephone numbers in Austria">Area code</a></th>
<td>07236</td>
</tr>
</table>

我正在尝试获取区号:07236。 我到目前为止所做的是匹配“&lt; a&gt;”节点: // * [text()=“区号”]

现在我需要获得祖先节点的兄弟节点&lt; th scope =“row”&gt;这是&lt; TD&GT;节点。 我选择直接匹配文本的原因是因为表格很大,数百行。

我试过// * [text()=“Area code”] /../ ancestor :: th至少匹配祖先 以及// * [text()=“Area code”] /../ follow :: td。它们都不起作用。

我是XPath的新手,所以如果答案显而易见,我会道歉。

2 个答案:

答案 0 :(得分:0)

这个XPath,

//th[normalize-space() = 'Area code']/following-sibling::td/text()

将根据请求选择空格规范化字符串值为"07236"的{​​{1}}之后td元素的th文本节点子节点。

答案 1 :(得分:0)

我找到了。我正在使用KNIME,这是一种数据分析工具,可以执行可以执行各种操作的节点。执行XPath节点时,我在上一条评论中写的命名空间存储在“dns”下。所以我的最终XPath表达式为:// dns:* [text()=“Area code”] /../ follow-sibling :: dns:td。