gpt4 book ai didi

java - 如何创建 XML 解析的泛型?

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:26 26 4
gpt4 key购买 nike

我目前使用 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 的 setter。现在我想创建一个泛型,我只需传递一个 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。

还有更多可用示例here要创建复杂对象,请添加列表、数组。

注意:Android平台不支持,如果你想在Android上使用它可以使用SimpleXML实现几乎相同

关于java - 如何创建 XML 解析的泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25321368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com