使用StAX对XML文档进行小修改

Mat*_*ard 5 java xml stax

我目前正在尝试读取XML文件,进行一些小的更改(更改某些属性的值),然后再将其写回.

我打算使用StAX解析器(javax.xml.stream.XMLStreamReader)读取每个事件,看看它是否是我想要更改的,然后javax.xml.stream.XMLStreamReader如果不需要更改则直接传递给StAX writer().

不幸的是,这看起来并不那么简单 - 作者无法获取事件类型和解析器对象,只有像writeAttribute和的方法writeStartElement.很显然,我可以用一个可以在XML文档中出现的每种可能类型的元素的大小写一个大的switch语句,然后再把它写回来,但是看起来它应该很简单似乎很麻烦.

是否有一些我缺少的东西可以很容易地将一个非常相似的XML文档写入您使用StAX读取的文档?

dli*_*sin 3

StAX 工作得很好而且速度非常快。我在一个项目中使用它来解析最大 20MB 的 XML 文件。我没有进行彻底的分析,但它绝对比SAX快。

至于你的问题:流媒体和事件处理之间的区别,据我所知是控制。使用流式 API,您可以逐步浏览文档并获取所需的内容。而基于事件的 API 您只能处理您感兴趣的内容。