2013-07-05 3 views
1

Я передаю XML-документ, следующий примерный код.Тег концевого элемента StAX с «<атрибутами элемента .. />», а не тегом целого конца</element>

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"/> 

т.е. конечным тегом «» не требуется, он должен закончить тег, как только записываются атрибуты. Есть идеи?

НАМЕРЕНИЕ: Свести к минимуму количество байтов, отправленных по сети. Примерно 15 тыс. Сообщений в секунду. Следовательно, стоит экономить несколько байтов на сообщение.

ответ

3

Вы должны использовать 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() необходим для пустых элементов.

+0

Отличное спасибо. – GBP

 Смежные вопросы

  • Нет связанных вопросов^_^