. EclipseLink JAXB (MOXy) JAXB 2 (JSR-222).
:
- ArrayList
ObjReal ObjStruc
1. ARRAYLIST AS ROOT OBJECT
JAXB (MOXy, Metro, JaxMe ..) Collection . -, Collection /.
@XmlRootElement(name="root-element-name")
@XmlAccessorType(XmlAccessType.FIELD)
public class ListWrapper {
private ArrayList<ObjReal> objReals;
}
2. BIDIRECTIONAL RELATIOSNHIP
@XmlInverseReference EclipseLink JAXB . . , .
ObjReal
import java.util.ArrayList;
import javax.xml.bind.annotation.*;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
class ObjReal {
private String id;
private String data;
ArrayList<ObjStruc> objStrucs=new ArrayList<ObjStruc>();
public ArrayList<ObjStruc> getObjStrucs() {
return objStrucs;
}
}
ObjStruc
@XmlInverseReference. fied/property :
import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlInverseReference;
@XmlAccessorType(XmlAccessType.FIELD)
class ObjStruc {
@XmlInverseReference(mappedBy="objStrucs")
private ObjReal objReal;
public ObjReal getObjReal() {
return objReal;
}
}
jaxb.properties
MOXy JAXB, jaxb.properties , :
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
Demo
, :
import java.io.File;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(ObjReal.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
File xml = new File("src/forum8868303/input.xml");
ObjReal objReal = (ObjReal) unmarshaller.unmarshal(xml);
for(ObjStruc objStruc : objReal.getObjStrucs()) {
System.out.println(objStruc.getObjReal());
}
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(objReal, System.out);
}
}
(input.xml)
<?xml version="1.0" encoding="UTF-8"?>
<objReal>
<id>123</id>
<data>some data</data>
<objStrucs/>
<objStrucs/>
</objReal>
. , ObjReal ObjStruc :
forum8868303.ObjReal@7f712b3a
forum8868303.ObjReal@7f712b3a
<?xml version="1.0" encoding="UTF-8"?>
<objReal>
<id>123</id>
<data>some data</data>
<objStrucs/>
<objStrucs/>
</objReal>
EclipseLink
EclipseLink :