我是JAXB的新手,目前正在开发一个项目,该项目需要将复杂的XML解组到多个嵌套对象中。例如,假设我有以下XML
<person>
<bio>
<id>12345</id>
<name>Keth TTT</name>
<age>30</age>
</bio>
<address>
<no>1232</no>
<street>York Street</street>
<city>NewYork<city>
<country>USA</country>
</address>
</person>
并假设我有以下域对象
class Person{
String id;
String name;
int age;
Address address;
}
和
class Address{
String name;
String no;
String street;
String city;
String country;
}
如果XSD正在混搭或具有匹配结构,JAXB将很容易填充这些POJO。但是在这里我们需要进行复杂的映射(例如:Person
和Address
类都包含相同的属性名称)。我们如何穿过这些物体并填充两个物体?
答案 0 :(得分:0)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。
您可以将MOXy的@XmlPath
扩展名用于您的用例。您的Person
课程类似于:
import javax.xml.bind.annotations*;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
class Person{
@XmlPath("bio/id/text()")
String id;
@XmlPath("bio/name/text()")
String name;
@XmlPath("bio/age/text()")
int age;
Address address;
}
要将MOXy指定为JAXB提供程序,您需要在与域模型相同的程序包中包含名为jaxb.properties
的文件,并带有以下条目(请参阅:http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html):
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
了解更多信息