我在尝试输出我正在分析的匹配节点的内容时遇到问题:
<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/>
很明显,我可以用regex把它去掉,但这感觉很乱,我确信我只是在某个地方缺少了一个函数?
尝试这样做:
my $description = $tree->findnodes('//div[@class="description"]/text()')->[0];
这是一个Xpath技巧。
使用./node()
获取所有子节点,包括文本和元素。
my $description = $tree->findnodes('//div[@class="description"]/node()');