Jaxb,避免重复的xml标记

时间:2016-12-07 11:36:19

标签: java xml jaxb

我遇到了Jaxb java类的实现问题。我的xml响应应该是:

combine.matrix <- matrix(gcDatalmFit$coefficients, eBgcData$coefficients, eBgcData$p.value, nrow = 45101, col = 16)
colnames(combine.matrix) <- col.names=c("GeneID",colnames(gcDatalmFit$coefficients), colnames(eBgcData$p.value), paste("p",colnames(eBgcData$coefficients))), sep=",")

#then save it
write.table(file="BLIMP1data.txt", combine.matrix, row.names=F)

这是我的java类:

 <rootElement attr1="value1" attr2="value2">
      <child> childValue </child>
 </rootElement>

这是儿童:

 @XmlRootElement
 public class RootElement {
     private String attr1;
     private String attr2;
     private Child child;

     @XmlAttribute
     public String getAttr1() {
         return attr1;
     }

     public void setAttr1(String attr1) {
         this.attr1 = attr1;
     }

     @XmlAttribute
     public String getAttr2() {
         return attr2;
     }

     public void setAttr2(String attr2) {
         this.attr2 = attr2;
     }

     public void setChild(Child c) {
         child = c;
     }

     @XmlElement
     public Token getChild() {
         return child;
     }
 }

我获得了这个xml:

 public class Child {

     private String child;

     public Child() {

     }

     public void setChild(String child) {
         this.child = child;
     }

     public String getChild() {
         return child;
     }

 }

怎么了?

1 个答案:

答案 0 :(得分:1)

RootElement 类的<child>变量生成第一个child
第二个<child>是针对 Child 类的child变量生成的。

如果您可以确保儿童类中只有一个映射,则可以将@XmlAnyElement添加到child变量。 JAXP不会生成第二个<child>元素。

public class Child {

    @XmlAnyElement
    private String child;

    public Child() {
    }

    public void setChild(String child) {
        this.child = child;
    }
    public String getChild() {
        return child;
    }
}
相关问题