2

我正在流式传输 XML 文档,以下是示例代码。

final XMLOutputFactory xof =  XMLOutputFactory.newInstance();
final ByteArrayOutputStream os = new ByteArrayOutputStream();
final XMLStreamWriter xtw = xof.createXMLStreamWriter(os);
xtw.writeStartDocument("utf-8", "1.0");
xtw.writeStartElement("Buddy");
xtw.writeAttribute("Name", "AB");
xtw.writeAttribute("Age", "25");
xtw.writeAttribute("petName", "XX");
xtw.writeEndElement();
xtw.close();

这产生

<?xml version="1.0" encoding="utf-8"?><Buddy Name="AB" Age="25" petName="XX"></Buddy>

我怎样才能让 StAX 写

<?xml version="1.0" encoding="utf-8"?><Buddy Name="AB" Age="25" petName="XX"/>

即结束标签“" 不是必需的,它应该在属性写入后立即结束标签。有什么想法吗?

意图:尽量减少通过网络发送的字节数。每秒大约 15k 条消息。因此,它值得为每条消息节省一些字节。

4

1 回答 1

4

您应该writeEmptyElement(...)为此使用:

xtw.writeStartDocument("utf-8", "1.0");
xtw.writeEmptyElement("Buddy");
xtw.writeAttribute("Name", "AB");
xtw.writeAttribute("Age", "25");
xtw.writeAttribute("petName", "XX");
xtw.writeEndDocument();

空元素不需要writeEndElement()

于 2013-07-07T09:01:02.887 回答