使用XML::Twig,有没有办法获取节点的整个HTML?我不想要节点的文本,而是整个HTML标签和所有.
输入XML
<content> <p>blah blah <b> bla bla </b> </p>
<p> line 2 <i> test </i? </p>
</content>
Run Code Online (Sandbox Code Playgroud)
码
my $twig = new XML::Twig(
TwigRoots => {'content' => 1},
TwigHandlers => $twig_handlers
);
my $twig_handlers = {'count/p' => \&count_ps};
sub count_ps {
my ($twig, $test) = @_;
$Data .= $test->text();
}
Run Code Online (Sandbox Code Playgroud)
$data 应该告诉我整个HTML.
使用Perl,我试图解析一堆XML文件,并尝试在XML中查找任何形式的URL并打印它.我的正则表达式似乎不起作用,它没有返回任何匹配.我错过了什么?
sub findURL{
local($inputLine, $outText);
$inputLine = $_[1];
while (length($inputLine) > 0)
{
if ($inputLine =~ /^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$/ )
{
$outText .= $&;
$inputLine = $';
}
else
{
$inputLine = "";
$outText .= "";
}
}
return $outText;
}
Run Code Online (Sandbox Code Playgroud) 我需要使用Perl代码生成XML输出.我正在尝试不使用任何库,因为它是非常简单的临时XML,可供流程中的另一个步骤使用.
通过我的perl代码,我需要编写类似于导致解析器错误的内容,以及以下XML输出:"url http://www.123.42 1345&4686=userid:fs/fsfsf"
<text>url http://www.123.42 1345&4686=userid:fs/fsfsf </text>
Run Code Online (Sandbox Code Playgroud)
所以我试图写,"url \<![CDATA[<http://www.123.42 1345&4686=userid:fs/fsfsf]\>"但这也导致解析器错误和以下输出:
<text>URL <![CDATA[http://www.123.42 1345&4686=userid:fs/fsfsf]></text>
Run Code Online (Sandbox Code Playgroud)
我想得到这个:
<text>URL <![CDATA[http://www.123.42 1345&4686=userid:fs/fsfsf]></text>
Run Code Online (Sandbox Code Playgroud)
如何使XML转义为"<"字符?