1

我有一个包含大约 300 个元素的大型 XML。我需要使用 Java 修改此 xml 中的 2 或 3 个元素。我不想进行传统的编组和解组,因为它涉及整个 XML 的解析。XPath/XSLT 如何操作?我知道我可以轻松读取数据,但我需要修改相同的数据并将其放回相同的 XML 中。这里主要关注的是性能。好心提醒

4

2 回答 2

1

使用 XPath/XSLT 意味着在开始转换之前将整个文档加载到内存中。如果这是一个问题(例如文档太大而无法存储),那么您需要使用另一种解决方案。也就是说,300 个元素听起来并不是很“大”。

一种替代方法是使用 StAX 解析器来查找和更改目标元素。看看有没有办法构建 StAX 过滤器链?

于 2012-06-20T09:36:14.290 回答
1

听起来 XSLT 对于这个问题来说可能太重了。你想稍微重写一个文件。如果您可以轻松描述每个更改(例如,您想删除“bar”元素上的“foo”属性),请考虑应用正则表达式替换。像这样的东西:

String fileContents = ...

fileContents.replaceAll("<bar foo=\"\\w+\"", "<bar");

于 2012-06-26T13:33:21.400 回答