java - 如何在没有命名空间的情况下编码?

标签 java xml jaxb

我有一个相当大的重复 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 注释类所在的包中)。那里有 @XmlSchemanamespace 属性。

另外,@XmlRootElement 注解中还有一个namespace 属性。

关于java - 如何在没有命名空间的情况下编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816176/

相关文章:

xml - 如何在 XML 林中创建带有属性的可选 XML 标签

java - JAXB - 来自 XmlAttribute 的标志 'required' 在原始类型上被忽略

java - 将 Saxon 的 DocumentBuilder 与 JAXB 结合使用会发出有关验证的警告

java - Append Method Linked List...它不断删除最后一个输入

java - 问题 JDK 在 Intellij 中创建 scala 项目

android - 在android中解析xlink类型的XML

java - 我知道如何通过按钮打开相机,但我不知道如何更改拍摄照片的位置,我该怎么做?

java - ARM 是更安全的指令集吗?

java - 连接时 Zookeeper java.net.NoRouteToHostException

java - 无法解码 SOAP 错误