У меня есть XML, который содержит & apos; for 'и т. д. Когда я разбираю его при использовании XML :: Twig и затем распечатываю его снова, все & apos; печатаются как '. Кроме того, XML :: Twig, похоже, переупорядочивает атрибуты, чтобы поместить их в алфавитном порядке. С точки зрения XML они эквивалентны, но я хочу внести небольшой набор изменений в XML и использовать diff, чтобы подтвердить, что сделаны только те изменения, которые я намеревался. Есть ли способ заставить XML :: Twig ничего не менять, кроме того, что я явно меняю?Я хочу XML :: Twig, чтобы напечатать точно, что было разобрано в
Вот мой XML:
<?xml version="1.0" encoding="utf-8"?>
<System>
<P C="C" B="B" A="A">'<>"&</P>
<P A="A" B="B" C="C">'<>"&</P>
</System>
И Perl:
my $twig = new XML::Twig(KeepSpaces => 'true');
$twig->parsefile("test.xml");
$twig->print();
А вот что распечатана:
<?xml version="1.0" encoding="utf-8"?>
<System>
<P A="A" B="B" C="C">'<>"&</P>
<P A="A" B="B" C="C">'<>"&</P>
</System>
Как насчет «унификации» как оригинала, так и выхода перед сравнением? Мы используем 'xmllint --c14n FILE.XML | xmllint --format -' для обоих, а затем для стандартного 'diff'. – choroba
Это мысль. Я бы предпочел не нормализовать XML, чтобы сделать diff, но это может быть разумным резервом. – JamieC