将java类转换为xml需要什么?

时间:2016-02-22 06:07:08

标签: java xml

我在java pojo类中见过很多地方  使用@XmlRootElement(name="Class_Name")注释。

文档告诉它用于将java类转换为xml。

但是需要做什么呢? 有谁能解释一下?

3 个答案:

答案 0 :(得分:2)

为什么要将java类转换为XML有很多可能的原因。但最常见的原因之一(尽管不一定总是如此)是因为您需要存储类信息,以便在其他地方动态重新创建。也就是说,存在转换和转换。

这方面的一个常见示例是:通过包含有关该类信息的网络/ Web传递XML消息,消息的接收者可以创建代理/动态类,并使用代理/动态类来执行某些操作。接收方。

使用XML可能带来的另一个好处是接收者可能不一定用java读取或处理转换后的java类。它可以由任何其他语言处理,例如C#,Python等。出于类似的原因,您也可以找到转换为JSON的类并传递它。

答案 1 :(得分:0)

当您通过网络发送Java对象时,它应该以某种方式序列化为一些可以发送的字符串。

有一些格式通过网络发送序列化数据,因此xml是其中之一,因为xml具有描述性格式,哪些对象可以从/向它序列化/反序列化,然后它非常用于许多语言,如java或许多标准,如SOAP webservices等。

答案 2 :(得分:0)

例如,Product是您的目标类:

@XmlRootElement
public class Product {
    private String name;
    private int quantity = 0;

    public String getName() {
        return name;
    }

    @XmlElement
    public void setName(String name) {
        this.name = name;
    }

    public int getQuantity() {
        return quantity;
    }

    @XmlElement
    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }
}

Setter必须使用@XmlElement注释标记

接下来我们需要进行编组操作:

File file = new File("test.xml");

SchemaFactory schemaFactory =  SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
JAXBContext jaxbContext = JAXBContext.newInstance(Product.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(product, file);