我有带有注释 @Entity 的实体 Bean A、B 当我尝试使用 JAXB Marshing 编码该 Bean 时,我得到了一个类似 XML 的结构
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a:A xmlns:a="..........." xmlns:b="...........">
<a:B dbId="0" >
<b:FirstName dbId="0">......</b:FirstName>
</a:B>
</a:A>
我用过
@XmlRootElement(name = "A",namespace = "........")
@XmlAccessorType(XmlAccessType.NONE)
@Entity
public class A{
@XmlElement(name = "B")
private B name;
............
...............
}
@Entity
@XmlRootElement(name = "B",namespace = "........")
@XmlAccessorType(XmlAccessType.NONE)
public class B{
.................
}
- 为什么我在 marshall 期间收到standalone="yes"以及如何删除它?
- 为什么我会收到 dbId="0"以及如何删除它?
如何在我的属性中添加类似 class="x.y.z.A"的内容,如下所示:
<a:B class="x.y.z.B" >
我有一个类,它只有一个类型为“Float”的变量,并且我不想在 xml 中显示 float 。
@XmlRootElement(name="start")
public class Start extends Timing{
private Float mFloat;
public Float getFloat() {
return mFloat;
}
public void setFloat(Float f) {
mFloat = f;
}
}
当我编码它时,我得到
<a:start>
<start:float>8.329042</start:float>
</a:start>
如何在没有“ float 标签”的情况下显示它,如下所示?
<a:start>8.329042<a/start>
出于安全原因,我无法提供我的真实类(class)。
最佳答案
- 您可以在
Marshaller
上设置JAXB_FRAGMENT
属性,以防止 header 写入OutputStream
或Writer
。 - 您必须有一个用
@XmlAttribute
注释的原始数字字段/属性。 JAXB 不会编码(marshal) null 值,因此您可以将基元更改为其相应的对象形式(即int
到Integer
)。 - 您可以引入一个用
@XmlAttribute
注解的私有(private)静态String
字段,并使用该值填充它。 - 您可以使用
@XmlValue
注解float
属性以获得所需的结果。
关于java - 实体的 jaxb XML Marshall 中的 dbId ="0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19829229/