java - JAXB 通过映射

标签 java xml jaxb

给定以下类:

@XmlRootElement(name = "parent")
class Parent {
   private Child child;

   // What annotation goes here
   public Child getChild() {
     return child;
   }

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

class Child {
   private Integer age;

   @XmlElement(name = "age")
   public Integer getAge() {
     return age;
   }

   public void setAge(Integer Age) {
     this.age = age;
   }

}

我需要添加什么注解(注解所在的地方)才能得到下面的xml:

<parent>
  <age>55</age> 
</parent>

我只是想出了具体的例子,所以让标 checkout 现在它所在的位置可能没有意义。但我真正想知道的是如何传递到 Child 类。基本上很容易为以下内容进行映射(我不想要):

<parent>
  <child>
    <age>55</age> 
  </child>  
</parent>

最佳答案

import javax.xml.bind.*;
import javax.xml.bind.annotation.*;

@XmlRootElement
class Parent {

    public static void main(String[] args) throws JAXBException {

        final Child child = new Child();
        child.age = 55;

        final Parent parent = new Parent();
        parent.child = child;

        final JAXBContext context = JAXBContext.newInstance(Parent.class);
        final Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                               Boolean.TRUE);
        marshaller.marshal(parent, System.out);
        System.out.flush();
    }

    @XmlElement
    public Integer getAge() {
        return child == null ? null : child.age;
    }

    @XmlTransient
    private Child child;
}

class Child {

    @XmlElement
    protected Integer age;
}

打印

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<parent>
    <age>55</age>
</parent>

关于java - JAXB 通过映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10904804/

相关文章:

java - 如何从 JAXB validator 获取错误详细信息?

java - 如何用 Jackson 以两种不同的方式序列化 pojo?

Java Libgdx 正确省略 gwt 构建的类引用

c# - 如何在构建过程之外合并 xml app.config 文件

python - 我如何在 Python 中使用 LXML 捕获 XML 文件的所有元素名称?

java - 解码 xml 时忽略前缀(命名空间)

java - 带数组的 Web 服务请求

java - 如何排除maven中的嵌套依赖

java - 提供 track drawable 来切换会弄乱外观

javax.xml.bind.PropertyException : name: eclipselink. 媒体类型值:application/json