Обновление одного элемента в документе XML - PullRequest
0 голосов
/ 20 ноября 2011

Можно ли проанализировать, а затем изменить один элемент в документе 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.

1 Ответ

1 голос
/ 20 ноября 2011

В Java библиотека Saxon должна выполнить все, что вы ищете:

http://sourceforge.net/projects/saxon/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...