在做xml解析时碰到如下问题:
在一个定义好的xml 报文中,需要输出一个首字母是大写的element 但是,在jaxb 中定义的propOder 指定的property 首字母必须是小写的.这个时候输出的内容 就全是首字母是大写的内容,
这个时候可以在相应的get 方法上添加一个 @XmlElement的注解,设置name 为 需要输出首字母大写的内容, 此时xml 输出的内容即为 首字母大写的了.
举个例子,首先随便写一个实体类。
package com.xxx;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Attr {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Attr(String id, String name) {
super();
this.id = id;
this.name = name;
}
public Attr() {
super();
}
}
然后 写个测试方法。
public static void main(String[] args) throws Exception {
Attr attr = new Attr("1","张三");
JAXBContext jc = JAXBContext.newInstance(Attr.class);
Marshaller m= jc.createMarshaller();
//规范输出.
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter w= new StringWriter();
m.marshal(attr, w);
System.out.println(w.toString());
}
输出结果是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attr>
<id>1</id>
<name>张三</name>
</attr>
在这个Attr上添加@XmlElement()标签。
package com.xxx;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Attr {
private String id;
private String name;
@XmlElement(name="Id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement(name="Name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Attr(String id, String name) {
super();
this.id = id;
this.name = name;
}
public Attr() {
super();
}
}
再次运行输出结果为:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attr>
<Id>1</Id>
<Name>张三</Name>
</attr>