繁体   English   中英

用StAX编写xml字符串

[英]Writing xml string with StAX

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

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

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

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

尽管XMLStreamWriter上有一个方法writeCharacters() ,但它并不能满足您的要求。 毕竟要转义'<', '>', '&'

由于您已经在内存中添加了XML字符串,因此您可能会采取黑客手段。

每当您需要编写原始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,以确保元素的正确顺序。 另外,出于完全相同的原因,您应该刷新底层的Writer。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM