我正在流式传输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 条消息。因此,每条消息值得节省一些字节。
最佳答案
您应该使用 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()
。
关于java - StAX 结束元素标记为 "<element attributes../>"而不是整个结束标记 </element>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17489791/