用 StAX 写入 xml 字符串

Writing xml string with StAX

是否可以直接使用 StAX 编写 xml 块? 我知道我可以将 XMLStreamWriterwriteStartElementwriteCharacterswriteEndElement 一起使用,但是 xml 字符串没有灵活性。

考虑到我必须编写一个大的 xml 文件(> 100 MB),我该如何解决这个限制。

我有这样的任意 xml 字符串,有时具有相当复杂的结构,需要将其与其他一些细节一起添加以形成最终的 xml 文件。这只是一个示例,不是实际的 xml 字符串。

<food>
<name>Strawberry Belgian Waffles</name>
<price>.95</price>
<description>
Light Belgian waffles covered with strawberries and whipped cream
</description>
<calories>900</calories>
</food>

虽然有一种方法 writeCharacters() on XMLStreamWriter,但这并不能满足您的要求。毕竟是转义'<', '>', '&'

因为您已经在内存中有了 XML 字符串,您可能会求助于 hack。

每当您需要编写原始文件时 XML 保留对底层编写器的引用并执行以下操作:

// somewhere before:
Writer underlyingWriter = /* get the underlying writer from somewhere */;
XMLStreamWriter xmlStreamWriter = factory.createXmlStreamWriter(underlyingWriter);

xmlStreamWriter.flush();
underlyingWriter.write(rawXML);
underlyingWriter.flush();
// carry on using the XMLStreamWriter

您需要在使用底层编写器之前刷新 xmlStreamWriter 以确保元素的正确顺序。此外,出于完全相同的原因,您应该刷新 underlyingWriter。