2015-06-03 3 views
0

Я хотел бы обмениваться узлом в файле XML, используя Mojo::DOM. Я уверен, что это возможно, но я еще не нашел пути.Замена узлов XML с использованием perl и Mojo :: DOM

Учитывая следующий 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 замененного тега.

ответ

1

Это очень просто, чтобы просто найти <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> 
Смежные вопросы