【问题标题】:JAXB is adding unwanted attributes?JAXB 正在添加不需要的属性?
【发布时间】:2013-10-08 13:15:00
【问题描述】:

我正在使用JAXB 将我的Java 模型序列化为ATOM。对于 Object 类型的 title 属性(我无法将其更改为 String),它正在添加命名空间属性。

<atom:title xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">
 myTitle
</atom:title>

这应该是:

<atom:title>myTitle</atom:title>

【问题讨论】:

  • 请显示您的注释类...如果您提供的只是输出,则很难确定发生了什么。

标签: java serialization jaxb


【解决方案1】:

如果您不能将title 属性更改为String 类型,那么您可以使用@XmlElement 注释来指定属性的类型(就JAXB 而言):

@XmlElement(namespace="http://www.w3.org/2001/XMLSchema", type=String.class)
public Object getTitle() {
    return title;
}

【讨论】:

  • 感谢您的回复。我不能这样做,因为title 可以是StringTitle 对象。
  • 你知道这些属性是从哪里来的吗?
  • @user86834 - xsi:type 属性用于限定在元素上设置的值。在您的示例文档中,很明显您使用String 的实例指定了title 属性。 xmlns:xsixmlns:xs 属性用于定义 xsi:type="xs:string" 引用的命名空间。
  • 为什么会自动添加,我的其他String属性没有
  • @user86834 - 它们不会被添加到类型为 String 且持有 String 的属性中,因为类型匹配。
猜你喜欢
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2017-08-08
相关资源
最近更新 更多