gpt4 book ai didi

xml - 使用 HTML::TreeBuilder::XPath 模块访问父级或兄弟级的 Xpath 表达式

转载 作者:行者123 更新时间:2023-12-03 16:12:38 25 4
gpt4 key购买 nike

我想使用 HTML::TreeBuilder::XPath Perl 模块选择节点的父节点或兄弟节点,让我们采用如下示例 HTML:

<tbody>
<tr>
<td class="c1">Match_Text</td>
<td class="c2">Extact_Text</td>
</tr>
<tr>
<td class="c1"></td>
<td class="c2"></td>
</tr>
</tbody>

所以我想为此提取文本“Match_Text”,我将 xpath 表达式为:
'/html/body//td[@class="c1"]="Match_Text"/../td[@class="c2"]'

这是我的用例的有效表达式。

但看起来 parent 没有实现,我从 perl 模块收到以下错误:

axis axis_parent not implemented [Can't locate object method "getParentNode" via package "XML::XPathEngine::Literal" at /usr/local/share/perl/5.10.1/XML/XPathEngine/Step.pm line 326. ]



任何人都可以建议可能适用于我的用例(访问节点的父/兄弟)的替代 Xpath 表达式。请注意,我只想使用 Xpath 表达式来执行此操作,并且不想创建 DOM 并显式遍历树。

最佳答案

错误消息具有误导性。问题不在于缺乏支持,而是您试图找到比较返回的 bool 值的父级。它没有一个。

你可以使用

//*[ td[@class="c1" and text()="Match_Text"] ]/td[@class="c2"]

//td[@class="c1" and text()="Match_Text"]/following-sibling::*

//td[@class="c1" and text()="Match_Text"]/following-sibling::td[@class="c2"]

//td[@class="c1" and text()="Match_Text"]/../td[@class="c2"]

关于xml - 使用 HTML::TreeBuilder::XPath 模块访问父级或兄弟级的 Xpath 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com