更新XML文件的一部分,保留所有格式

时间:2012-12-14 21:20:18

标签: java xml clojure

我需要更新XML文件中的几个节点(只需用一个文本元素替换另一个),这样生成的XML文件将保留所有格式(如果可能)。

例如,以下是源文档:

<project>
    <!-- Some long comment -->
    <!-- On several lines -->
    <name>Name</name> <!-- And here too -->
    <version>1.2.3</version>

</project>

这是必需的结果文档(请注意版本已更改):

<project>
    <!-- Some long comment -->
    <!-- On several lines -->
    <name>Name</name> <!-- And here too -->
    <version>3.2.1</version>

</project>

因此,结果会保留源的所有格式,并且只有版本标记内容已更改。

不幸的是,我找不到使用标准Clojure(或Java)库的方法。当然,它们确实支持XML的字符串表示的基本缩进,但对我来说还不够。

有没有办法用一些XML操作库(最好是在Clojure中,但我猜Java也很好),或者我必须回到纯文本/ regexp替换? (真的,我不想要XML tags leaking from my eyes,这应该是最后的手段......)

1 个答案:

答案 0 :(得分:0)

也许是一种混合方法,使用clojure.xml解析XML以查找要替换的确切文本,并确保更改正确的位置。然后使用字符串替换来更改它。我是hesatent to advise using regular expressions to parse XML