简体   繁体   English

JAXB从Java到XML

[英]JAXB from Java to XML

My target is to get this xml marshalling Java objects. 我的目标是获取此xml编组Java对象。

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ns2:cedolini xmlns:ns2="" data_produzione=""
 codice_sistema_emittente="">
<cedolino>
    <testata lingua="I">
        <info>
            <infoSoggetto></infoSoggetto>
            <infoIndirizzo></infoIndirizzo>
            <email></email>
        </info>
        <anagrafica cod="xxxxxxyyxyyxyyyx">
            <cognome></cognome>
            <nome></nome>
            <dataNascita></dataNascita>
            <via></via>
            <civico></civico>
            <cap></cap>
            <citta_residenza></citta_residenza>
            <provincia_residenza></provincia_residenza>
        </anagrafica>
    </testata>
</cedolino>
.
.
</ns2:cedolini>

My trouble is how to represent the list of object Cedolino. 我的麻烦是如何表示对象Cedolino的列表。

<ns2:cedolini xmlns:ns2="" data_produzione=""
 codice_sistema_emittente="">
    <cedolino>
      ....
    </cedolino>
    <cedolino>
      ....
    </cedolino>
</ns2:cedolini>

In my mind the solution to represent each Cedolino object is something like that. 在我看来,代表每个Cedolino对象的解决方案就是这样。

@XmlRootElement()
public class Cedolino{

  private Testata testata;
  private Info info;
  private Anagrafica anagrafica;

  public get and set methods...

}

Convert your xml to Xsd , follow below link : https://www.freeformatter.com/xsd-generator.html 将您的xml转换为Xsd,请点击以下链接: https ://www.freeformatter.com/xsd-generator.html

Once you get the generated xsd, save that in your project, now generate POJO using xsd. 获得生成的xsd后,将其保存在项目中,现在使用xsd生成POJO。

GENERATING POJO USING xsd: 使用xsd生成POJO:

1.in eclipse goto file -> new-> Other-> JAXB classes from schema. 1.在eclipse goto文件->新建->其他->模式中的JAXB类中。 provide package name, where you want your pojo to be generated. 提供软件包名称,您希望在其中生成pojo。

SimpleXml can do it. SimpleXml可以做到。 First some POJOs: 首先介绍一些POJO:

@XmlName("ns2:cedolini")
public class Cedolini {
    @XmlName("cedolino")
    public List<Cedolino> cedolinos;
}

public class Cedolino {
    public Testata testata;
}

public class Testata {
    @XmlAttribute
    public String lingua;
    public Info info;
    public Anagrafica anagrafica;
}
public class Info {}
public class Anagrafica {
    @XmlAttribute
    public String cod;
}

Then serialize and print: 然后序列化并打印:

final SimpleXml simple = new SimpleXml();
final Cedolini i = simple.fromXml(xml, Cedolini.class);
System.out.println(i.cedolinos.get(0).testata.lingua + " : " + i.cedolinos.get(0).testata.anagrafica.cod);

This will print: 这将打印:

I : xxxxxxyyxyyxyyyx

SimpleXml is in maven central: SimpleXml位于Maven中央:

<dependency>
    <groupId>com.github.codemonstur</groupId>
    <artifactId>simplexml</artifactId>
    <version>1.5.5</version>
</dependency>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM