Можно ли проанализировать, а затем изменить один элемент в документе XML?
В настоящее время я пишу скрипт в ruby, который должен изменить значение (указанное в xpath) в XML-файле. В настоящее время я использую библиотеку REXML, чтобы сделать это:
xmldocument = Document.new(File.new(filename))
property = XPath.first(xmldocument, "/parent/element/property")
property.text = "New property value"
puts xmldocument
Где ввод XML:
<?xml version="1.0" encoding="UTF-8"?>
<parent>
<element>
<property>Old property value</property>
<verbose />
</element>
...
(more elements here)
...
</parent>
И вывод:
<?xml version='1.0' encoding='UTF-8'?>
<parent>
<element>
<property>New property value</property>
<verbose/>
</element>
...
(more elements here)
...
</parent>
Вы должны заметить, что выходной xml немного переформатирован и сделано больше, чем мое желаемое изменение. Например, тег <verbose />
изменяется на <verbose/>
, а двойные кавычки заменяются одинарными кавычками в первой строке.
Каков наилучший способ изменить только данный элемент XML-файла и оставить остальную часть файла без изменений? В идеале, есть решение для Ruby, но я бы хотел знать решение на других языках, таких как Java.