3

我在尝试输出我正在解析的匹配节点的内容时遇到问题:

<div class="description">some text <br/>more text<br/></div>

HTML::TreeBuilder::XPath用来查找节点(这个类只有一个 div):

my $description = $tree->findnodes('//div[@class="description"]')->[0];

它找到了节点(HTML::Element我相信返回),但也$description->as_HTML包含了元素本身——我只希望元素中包含的所有内容都是 HTML:

some text <br/>more text<br/>

我显然可以用正则表达式把它去掉,但这感觉很乱,我敢肯定我只是在某个地方缺少了一个函数来做它?

4

2 回答 2

0

用于./node()获取所有子节点,包括文本和元素。

my $description = $tree->findnodes('//div[@class="description"]/node()');
于 2013-02-06T13:52:44.227 回答
0

尝试这样做:

my $description = $tree->findnodes('//div[@class="description"]/text()')->[0];

这是一个 Xpath 技巧。

于 2013-02-06T13:22:31.107 回答