Small modification to an XML document using StAX我目前正在尝试读取XML文件,进行一些小的更改(更改某些属性的值),然后再次写回。 我打算在每个事件中使用StAX解析器( 不幸的是,这看起来并不那么简单-编写者无法采用事件类型和解析器对象,只能采用 我是否缺少某些东西,可以轻松编写出与您用StAX读取的XML文档非常相似的XML文档? 经过一番摸索之后,答案似乎是使用事件读取器/写入器版本而不是Stream版本。 (即javax.xml.stream.XMLEventReader和javax.xml.stream.XMLEventWriter) 另请参阅http://www.devx.com/tips/Tip/37795,这最终使我感动。 StAX可以很好地工作并且非常快。我在一个项目中使用它来解析最大20MB的XML文件。我没有详尽的分析,但是绝对比SAX快。 关于您的问题:流式处理和事件处理之间的区别是AFAIK是控件。使用流API,您可以逐步浏览文档并获取所需的内容。而基于事件的API您只能处理您感兴趣的内容。 我知道这是一个比较老的问题,但是如果其他任何人正在寻找类似的东西,还有另一种选择:Woodstox Stax2扩展API具有方法:
使用流编写器从流阅读器复制当前指向的事件。这不仅简单而且非常有效。我已经成功地将其用于类似的修改。 (如何获取XMLStreamWriter2等?所有Woodstox提供的实例都实现了这些扩展版本-加上包装,以防有人也希望使用"基本" Stax变体)。 |