带有“<element attributes .. =”“>”的StAX结束元素标记,而不是整个结束标记</element>

时间:2013-07-05 13:14:21

标签: java stax

我正在流式传输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条消息。因此,每条消息可以节省一些字节。

1 个答案:

答案 0 :(得分: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()