我正在使用 Woodstox 在我的应用程序中流式传输 XML 文档。我需要在处理它们之前设置模式定义的元素的默认属性,但是使用 Woodstox 执行此操作的唯一方法是使用额外的 XMLStreamReader 将文档读入内存,其中包含一些写入默认属性的逻辑,将其写出来到内存中的 XML 文档,然后将内存中的文档传递给业务逻辑。
我不喜欢这个。我想为每个元素流式传输文档以保持较低的内存占用,因为文档可能很大,并且我在应用程序中运行了多个实例。有没有办法在流式传输文档时将属性注入 XMLStreamReader?我已经找到了一种在流式传输时跳过我不感兴趣的节点的方法:
public class XMLPreProcessor extends StreamReader2Delegate {
public XMLPreProcessor(XMLStreamReader2 sr) {
super(sr);
}
//Skip over all processing instructions
//Can this be extended to inject attributes to elements?
@Override
public int next() throws XMLStreamException {
int eventType = super.next();
while(eventType == XMLStreamConstants.PROCESSING_INSTRUCTION) {
eventType = super.next();
}
return eventType;
}
}
可以调整此委托以将属性注入 XMLStreamReader 吗?