Java 使用jaxb解析复杂的xml属性并创建对象模型
我有一个XML,看起来像这样Java 使用jaxb解析复杂的xml属性并创建对象模型,java,xml,jaxb,jaxb2,Java,Xml,Jaxb,Jaxb2,我有一个XML,看起来像这样 <?xml version="1.0" ?> <subjectAreaGroup> <subjectArea> <myObject> <layout columnNum="3" /> <column name="ID" value="101"/> <column name="NAME" valu
<?xml version="1.0" ?>
<subjectAreaGroup>
<subjectArea>
<myObject>
<layout columnNum="3" />
<column name="ID" value="101"/>
<column name="NAME" value="xyz"/>
<column name="AGE" value="25" />
</myObject>
</subjectArea>
</subjectAreaGroup>
在这里,我必须处理复杂的属性并创建对象模型。你能帮我解决这个问题吗?你可以用。GsonXml是一个小型库,允许使用googlegson库进行XML反序列化。其主要思想是将XML pull解析器事件流转换为JSON令牌流。您可以使用JAXB编组将对象转换为XML,反之亦然。例如,将客户对象转换为XML文件
@XmlRootElement
public class Customer {
String name;
int age;
int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
@XmlAttribute
public void setId(int id) {
this.id = id;
}
}
try {
Customer customer = new Customer();
customer.setId(100);
customer.setName("student");
customer.setAge(29);
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(customer, file);
jaxbMarshaller.marshal(customer, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
try {
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer);
} catch (JAXBException e) {
e.printStackTrace();
}
输出
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
<age>29</age>
<name>student</name>
</customer>
你能提供更多关于对象模型的细节吗谢谢你的帖子,但我要求只使用Jaxb来实现这一点。我必须解析till列元素,并构建一个属性列表,包括ID、NAME、AGE以及value属性。我试过你的解决办法,但没有解决问题。