使用 perl 和 Mojo::DOM 替换 XML 节点
Replacing XML nodes using perl and Mojo::DOM
我想使用 Mojo::DOM 交换 XML 文件中的节点。
我很确定这是可能的,但我还没有找到办法。
鉴于以下 XML:
my $xml = q~
<html>
<div>
<p>1</p>
<p>2</p>
<img />
</div>
</html>
~;
我想删除 div 并插入一个正文标签,这样结果如下所示:
my $xml = q~
<html>
<body>
<p>1</p>
<p>2</p>
<img />
</body>
</html>
~;
我考虑过替换,但我没有找到替换为被替换标签的$dom的示例。
很简单,只要找到<div>
元素,用tag
方法改变它的标签
本程序演示。 CSS 选择器 html > div
找到(第一个)<div>
元素,它是 <html>
元素
的子元素
use strict;
use warnings;
use Mojo::DOM;
my $xml = q~
<html>
<div>
<p>1</p>
<p>2</p>
<img />
</div>
</html>
~;
my $dom = Mojo::DOM->new($xml);
$dom->at('html > div')->tag('body');
print $dom, "\n";
输出
<html>
<body>
<p>1</p>
<p>2</p>
<img>
</body>
</html>
我想使用 Mojo::DOM 交换 XML 文件中的节点。 我很确定这是可能的,但我还没有找到办法。
鉴于以下 XML:
my $xml = q~
<html>
<div>
<p>1</p>
<p>2</p>
<img />
</div>
</html>
~;
我想删除 div 并插入一个正文标签,这样结果如下所示:
my $xml = q~
<html>
<body>
<p>1</p>
<p>2</p>
<img />
</body>
</html>
~;
我考虑过替换,但我没有找到替换为被替换标签的$dom的示例。
很简单,只要找到<div>
元素,用tag
方法改变它的标签
本程序演示。 CSS 选择器 html > div
找到(第一个)<div>
元素,它是 <html>
元素
use strict;
use warnings;
use Mojo::DOM;
my $xml = q~
<html>
<div>
<p>1</p>
<p>2</p>
<img />
</div>
</html>
~;
my $dom = Mojo::DOM->new($xml);
$dom->at('html > div')->tag('body');
print $dom, "\n";
输出
<html>
<body>
<p>1</p>
<p>2</p>
<img>
</body>
</html>