用 StAX 写入 xml 字符串
Writing xml string with StAX
是否可以直接使用 StAX 编写 xml 块?
我知道我可以将 XMLStreamWriter
与 writeStartElement
、writeCharacters
和 writeEndElement
一起使用,但是 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。
是否可以直接使用 StAX 编写 xml 块?
我知道我可以将 XMLStreamWriter
与 writeStartElement
、writeCharacters
和 writeEndElement
一起使用,但是 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。