我有一个相当大的重复 XML 要使用 JAXB 创建。将整个对象存储在内存中,然后进行编码(marshal)处理会占用太多内存。本质上,我的 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,但它看起来很丑,所以我想知道有没有办法告诉编码器不要为项目元素放置命名空间?或者有没有更好的方法来使用 JAXB 逐 block 序列化为 XML block ?
最佳答案
检查您的 package-info.java
(在您的 jaxb 注释类所在的包中)。那里有 @XmlSchema
的 namespace
属性。
另外,@XmlRootElement
注解中还有一个namespace
属性。
关于java - 如何在没有命名空间的情况下编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816176/