[英]How can I create Generics for XML Parsing?
我目前使用jsoup,有時使用dom4j來解析xml字符串。 這是一個有關如何使用jsoup的示例。
Document doc = Jsoup.parse(xml);
Elements root = doc.select("person");
for(Elements elem : elements){
Person person = new Person();
person.setFirstname(elem.select("firstName").text());
person.setLastname(elem.select("lastName").text());
person.setAddress(elem.select("address").text());
//other setters here
}
每次我必須解析xml時,都必須獲取所有元素並將其設置為POJO的設置器。 現在,我想創建一個泛型,只需傳遞一個xml字符串和一個POJO類,然后它將基於xml的所有元素設置字段的所有值。 我該怎么做? 有任何想法嗎?
提前致謝。
JAXB是必經之路。
注意:它包含在JAVA 1.6和更高版本中
將XML標記添加到POJO(XmlRootElement對於簡單對象已經足夠,XmlElement也可以添加到變量中)
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Person")
public class Person {
private String firstName;
private String lastName;
private String address;
public final String getFirstName() {
return firstName;
}
public final void setFirstName(String firstName) {
this.firstName = firstName;
}
public final String getLastName() {
return lastName;
}
public final void setLastName(String lastName) {
this.lastName = lastName;
}
public final String getAddress() {
return address;
}
public final void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "FirstName: " + firstName + " LastName: " + lastName + " Address: " + address;
}
}
使用Unmarshaller從xml文件創建POJO。
File file = new File("<Path to Xml file>");
JAXBContext context = JAXBContext.newInstance(Person.class);
Unmarshaller unmarsheller = context.createUnmarshaller();
Person person = (Person) unmarsheller.unmarshal(file);
System.out.println(person);
您也可以使用Marshaller從POJO創建XML。
還有更多可用的例子在這里創建復雜的對象,添加列表,數組。
注意:它在Android平台中不可用,如果您想在android上使用它,則可以使用具有幾乎相同實現的SimpleXML
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.