簡體   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