簡體   English   中英

如何為XML解析創建泛型?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM