使用perl和Mojo :: DOM替换XML节点

时间:2015-06-03 16:33:31

标签: perl mojolicious

我想使用Mojo::DOM在XML文件中交换节点。 我很确定这是可能的,但我还没有找到办法。

给出以下XML:

my $xml = q~
<html>
    <div>
        <p>1</p>
        <p>2</p>
        <img />
    </div>
</html>
~;

我想删除div而是插入一个body标签,以便结果如下所示:

my $xml = q~
<html>
    <body>
        <p>1</p>
        <p>2</p>
        <img />
    </body>
</html>
~;

我考虑过替换,但我没有找到替换是替换标签的$ dom的示例。

1 个答案:

答案 0 :(得分:1)

找到<div>元素并使用tag方法更改其标记非常简单

该程序演示。 CSS选择器html > div找到<div>元素的{first} <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>