4

我需要更新 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 也很好),或者我必须退回到纯文本/正则表达式替换?(真的,我不希望XML 标签从我的眼睛中泄漏出来,这应该是最后的手段......)

4

1 回答 1

0

也许是一种混合方法,使用 clojure.xml 解析 XML 以找到您想要替换的确切文本,并确保您正在更改正确的位置。然后使用字符串替换来改变它。我很犹豫是否建议使用正则表达式来解析 XML

于 2012-12-18T19:06:59.213 回答