Как заменить тег <opt>в XML :: Simple на оригинальное имя тега? - PullRequest
2 голосов
/ 14 января 2010

Я использую XML :: Simple для редактирования файла XML. После чего обновленные данные отправляются в новый файл XML. Но эта процедура приводит к добавлению тега <opt></opt>, и исходный родительский тег теряется. Я хочу заменить <opt> на оригинальное имя тега. Как мне это сделать?

Ответы [ 4 ]

3 голосов
/ 21 января 2011

Вы также можете попробовать поискать опцию rootname . Смотри также:

Как удалить тег в XML :: Простой вывод?

2 голосов
/ 14 января 2010

См. KeepRoot . Также следует рассмотреть возможность включения строгий режим .

#!/usr/bin/perl

use strict; use warnings;

use XML::Simple qw(:strict);
use Data::Dumper;

my $x = XMLin(\*DATA, KeepRoot => 1, ForceArray => 1, KeyAttr => ['the']);

print XMLout($x, KeepRoot => 1, KeyAttr => ['the']);

__DATA__
<this>
<that the="other">This that and the other</that>
</this>

Выход:

<this>
  <that the="other">This that and the other</that>
</this>
0 голосов
/ 14 января 2010

Вы расширяете пределы XML :: Simple . Когда вы дошли до того, что вам не понравилось то, что он делает, пришло время для чего-то другого. Что-то еще, зависит от вашей проблемы, но мне нравится XML :: Twig .

0 голосов
/ 14 января 2010

в новом XML-файле вы можете использовать регулярные выражения, чтобы найти шаблон, который вы хотите удалить, а затем заменить его на нужный шаблон, то есть на оригинальный тег.

 @ar="xml file";
 $pat="tag you want to replace";
 $rep="original tag";


 foreach $a (@ar) {
   if ($a =~ s|$pat|$rep|gi;
   }

Имя файла xmlобр;

...