更新xml文档中的单个元素

时间:2011-11-19 23:22:56

标签: java ruby xml

是否可以解析然后修改XML文档中的单个元素?

我目前正在ruby中编写一个脚本,需要修改xml文件中的值(由xpath指定)。我目前正在使用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 个答案:

答案 0 :(得分:1)

在Java中,Saxon图书馆应该完成你想要的一切:

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