Я пытаюсь изменить атрибут XML с помощью Perl.Perl XML: LibXML setAttribute не меняет документ
XML-файл выглядит следующим образом:
<Node>
<NodeX attr1="1" attr2="2" attr3="3"/>
</Node>
сценарий Perl содержит:
my @nodes = $doc->findnodes("//Node/Nodex");;
if (@nodes) {
my $res = $nodes[0]->hasAttribute("attr3");
if ($res) {
foreach (@nodes) {
$_->setAttribute('attr3', "10");
}
}
}
В результате сценарий не изменяет атрибут. Я уже протестировал разрешения, и сценарий может писать и читать XML-файл, используя print
.
setAttribute
, кажется, ничего не делает, несмотря на то, что hasAttribute
возвращает true.
Как вы убедитесь, что атрибут не был изменен? Где вы выводите XML? Можно ли изменить другие аспекты документа? – amon
Я просто прочитал XML-файл после завершения сценария. Остальная часть документа обрабатывается в XSLT, а все остальные атрибуты задаются в соответствии с функциями, указанными в XSLT. Другие вопросы? –
Возможно, вы разбираете файл в DOM, внося изменения в DOM, но забываете записать измененный DOM обратно в файл? – tobyink