我想获取客户节点中的ID,年龄,名称和listType,来自客户节点的联系。
我的样本Xml格式是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customers>
<values>
<type>
<customer id="100">
<age>29</age>
<name>mkyong</name>
</customer>
<customer id="140">
<age>29</age>
<name>chandoo</name>
</customer>
</type>
</values>
<listType>Population</listType>
<contact>phani</contact>
</customers>
我创建了以下的pojo课程(客户,价值观,类型,客户)
Customers.java
@XmlRootElement( name="customers" )
public class Customers {
List<Values> values;
private String listType;
private String contact;
Setters & Getters
}
Values.java
class Values {
List<Type> type;
Setters & Getters
}
Type.java
class Type {
private int id;
private List<Customer> customer;
Setters & Getters
}
Customer.java
class Customer {
private String name;
private int age;
Setters & Getters
}
主要课程 App.java
public static void main(String[] args) {
try {
File file = new File("D:/userxml/complex.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customers.class,Values.class,Type.class,Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Type type = (Type) jaxbUnmarshaller.unmarshal(file);
System.out.println(type);
} catch (JAXBException e) {
e.printStackTrace();
}
}
我是PHP开发人员,是java的新手。请帮帮我。我想获取客户详细信息
答案 0 :(得分:1)
请使用:
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customers customers = (Customers) jaxbUnmarshaller.unmarshal(file);
这将使用您的类中定义的结构创建Customers对象,您可以使用适当的getter来获取所需的值。
要回答评论中的问题,请尝试(这只是对列表中第一个元素进行硬编码调用的示例):
System.out.println(customers.getValues().get(0).getType().get(0));
System.out.println(customers.getValues().get(0).getType().get(0).getCustomer().get(0).getAge());
System.out.println(customers.getValues().get(0).getType().get(0).getCustomer().get(0).getName());
调用相应的getter并迭代Type中Customer对象的列表。