1

我有带有注释 @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{
.................
}
  1. 为什么我在马歇尔期间得到独立 =“是”以及如何删除它?
  2. 为什么我得到 dbId="0" 以及如何删除它?
  3. 如何在我的属性中添加 class="xyzA" 之类的东西,如下所示:

    <a:B class="x.y.z.B" >
    

我有一个类,它只有一个 "Float" 类型的变量,我不想在 xml 中显示浮点数。

@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>

我如何在没有“浮动标签”的情况下显示它,如下所示?

<a:start>8.329042<a/start>

出于安全原因,我无法提供我真正的课程。

4

1 回答 1

1
  1. 您可以在 上设置JAXB_FRAGMENT属性Marshaller以防止将标头写入OutputStreamWriter
  2. 您必须有一个原始数字字段/属性用@XmlAttribute. JAXB 不会编组 null 值,因此您可以将原语更改为其相应的对象形式(即int更改为Integer)。
  3. 您可以引入一个String带有注释的私有静态字段,@XmlAttribute并使用该值填充它。
  4. 您可以使用注释float属性@XmlValue来获得所需的结果。
于 2013-11-07T13:13:22.663 回答