Как упорядочить без пространства имен?

У меня есть довольно большой повторяющийся XML для создания использования JAXB. Хранить целый объект в памяти затем делает маршалинг берет слишком много памяти. По существу мой XML похож на это:

<Store>
  <item />
  <item />
  <item />
.....
</Store>

В настоящее время мое решение проблемы состоит в том, чтобы "трудно кодировать" корневой тег к потоку вывода и упорядочить каждый повторяющийся элемент один за другим:

aOutputStream.write("<?xml version="1.0"?>")
aOutputStream.write("<Store>")

foreach items as item
  aMarshaller.marshall(item, aOutputStream)
end
aOutputStream.write("</Store>")
aOutputStream.close()

Так или иначе JAXB генерируют XML как это

 <Store  xmlns="http://stackoverflow.com">
  <item xmlns="http://stackoverflow.com"/>
  <item xmlns="http://stackoverflow.com"/>
  <item xmlns="http://stackoverflow.com"/>
.....
</Store>

Хотя это - допустимый XML, но это просто выглядит ужасным, таким образом, я задаюсь вопросом, там какой-либо способ сказать marshaller не помещать пространство имен для элементов объекта? Или есть ли лучший способ использовать JAXB для сериализации к блоку XML блоком?

19
задан Lii 15 June 2016 в 00:52
поделиться

2 ответа

Проверьте свой package-info.java (в пакете, где находятся ваши классы, аннотированные jaxb). Там есть атрибут пространства имен для @XmlSchema .

Кроме того, в аннотации @XmlRootElement есть атрибут пространства имен .

12
ответ дан 30 November 2019 в 03:48
поделиться

Если вы не укажете пространство имен, JaxB не будет его писать.

Вы можете использовать Stax на потоке, если ваша структура не слишком сложна.

0
ответ дан 30 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: