我在java pojo类中见过很多地方
使用@XmlRootElement(name="Class_Name")
注释。
文档告诉它用于将java类转换为xml。
但是需要做什么呢? 有谁能解释一下?
答案 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);