Dom XPath节点由br连接的文本
如何通过br再次在br标记之间连接文本节点 下面是xml代码Dom XPath节点由br连接的文本,dom,xpath,libxml2,html-treebuilder,Dom,Xpath,Libxml2,Html Treebuilder,如何通过br再次在br标记之间连接文本节点 下面是xml代码 <div> text1. <br> text2. <br> text3. <div>ad sense code</div> <br> text4. <div>ad sense code</div> <br> textxx. <b
<div>
text1.
<br>
text2.
<br>
text3.
<div>ad sense code</div>
<br>
text4.
<div>ad sense code</div>
<br>
textxx.
<br>
</div>
虽然我希望它是这样的:
text1.text2.text3.text4.textxx.
text1.<br>text2.<br>text3.<br>text4.<br>textxx.<br>
$text = "";
$tree = HTML::TreeBuilder::LibXML->new_from_content($content);
foreach my $node ($tree->findnodes("./div/text()[position()>1]")) {
$text .= $node->findvalue('string(.)') . "<br>";
}
$text =~ s/<br>$//g;
text1.
text2.
text3.
text4.
textxx.
只是我需要保留br标签。
我使用的是Perl HTML::TreeBuilder::LibXML模块。XPath可用于(a)从输入文档中选择节点,或(b)从输入文档中的节点计算字符串、布尔值或数字等原子值。它永远不能[在非常边缘的情况下例外]返回输入中不存在的节点
还不完全清楚你所期望的输出是什么意思
text1.<br>text2.<br>text3.<br>text4.<br>textxx.<br>
text1.
text2.
text3.
text4.
textxx.
你想把它当作一根绳子吗?或者是一系列的文本节点和元素节点
在XPath 3.1中,可以使用serialize()
函数将其作为字符串返回,但在Perl中,您只能访问古老且有限的XPath 1.0
无法将其作为一组节点返回,因为节点不在源中:源中包含具有值的文本节点,例如“\uuuu text1\uuuuu”
,其中下划线表示空白,并且所需的输出会删除空白
您似乎正在进行转换,而不仅仅是选择,因此您脱离了XPath领域,进入了XSLT。我能够在Perl中实现的解决方案如下所示:
text1.text2.text3.text4.textxx.
text1.<br>text2.<br>text3.<br>text4.<br>textxx.<br>
$text = "";
$tree = HTML::TreeBuilder::LibXML->new_from_content($content);
foreach my $node ($tree->findnodes("./div/text()[position()>1]")) {
$text .= $node->findvalue('string(.)') . "<br>";
}
$text =~ s/<br>$//g;
$text=”“;
$tree=HTML::TreeBuilder::LibXML->new\u from\u content($content);
foreach my$节点($tree->findnodes(“./div/text()[position()>1]”){
$text.=$node->findvalue('string(.)')。“
”;
}
$text=~s/
$//g;