使用JAXB格式化XML

时间:2017-12-18 23:24:50

标签: java xml jaxb

我一直试图找到类似的回答问题,但我没有运气。

我基本上需要从文本文件中读取一些数据,然后将其编组为XML。但是,正常格式化会创建

<title></title> 

字段等,而我想要的是每个字段都有这种格式:

<field name="title"></field>.

&#34;标题&#34;这里只是一个占位符,我想要的是name属性具有绑定的变量名,所以

<title> 

成为

<field name="title">

<author> 

成为

<field name="author"> etc.

我猜它与我没有得到的注释有关。

我的文档类结构简单,如

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Document
{
    private Integer id;
    private String content;
    private String title;
    private String author;
    private String b;
}

1 个答案:

答案 0 :(得分:1)

JAXB中的每个XML元素(非属性)都是Java类。 属性可以是属性。 所以你必须有类似的东西:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Document
{
   @XmlElement(name = "field")
   private List<Field> field = new ArrayList<>();
}

@XmlType()
public class Field
{
   @XmlAttribute(name="name", required="true")
   private String name;

   @XmlValue
   private Object value;

}

实际上 private Object value; 会转换为XML anyType,因此您可以将Integer设为idString content等。

将您当前的Document类封送广告BT改为

<Document>
      <id></id>
      <content></content>
      <title></title>
      <author></author>
      <b></b>
<Document>