如何使用JAXB将空元素解组为空字符串
有这样一个伪代码:如何使用JAXB将空元素解组为空字符串,jaxb,marshalling,element,unmarshalling,Jaxb,Marshalling,Element,Unmarshalling,有这样一个伪代码: Alma alma = new Alma(); alma.setKorte(""); //Korte is a string member marshaller.marshal(alma, stringwriter); System.out.println(stringwriter.toString()); <alma><korte/></alma> @XmlAccessorType(XmlAccessType.FIELD) @XmlT
Alma alma = new Alma();
alma.setKorte(""); //Korte is a string member
marshaller.marshal(alma, stringwriter);
System.out.println(stringwriter.toString());
<alma><korte/></alma>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Alma", propOrder = {
"korte"
})
public class Alma
implements Serializable
{
private final static long serialVersionUID = 100L;
@XmlElement(required = true)
protected String korte;
它产生的输出是(我知道这是一种技巧,其中有空元素,但这就是它在我的系统中的工作方式,所以在我之前有人这样设置):
JAXB实现应该将空元素解组为字符串属性的“”。解决方案是升级到包含此修复程序的JAXB实现的更新版本 下面的示例使用JDK1.6.0_20中包含的JAXB版本对我有效 演示
import java.io.StringReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Alma.class);
String xmlString = "<alma><korte/></alma>";
StringReader xmlReader = new StringReader(xmlString);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Alma alma = (Alma) unmarshaller.unmarshal(xmlReader);
System.out.println(alma.getKorte().length());
}
}
Alma
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
@XmlType(name = "Alma", propOrder = { "korte" })
public class Alma implements Serializable {
private final static long serialVersionUID = 100L;
@XmlElement(required = true)
protected String korte;
public String getKorte() {
return korte;
}
public void setKorte(String korte) {
this.korte = korte;
}
}
阿尔玛课程是什么样子的?是的,是真的。结果是代码的其他部分使其为空。:)
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
@XmlType(name = "Alma", propOrder = { "korte" })
public class Alma implements Serializable {
private final static long serialVersionUID = 100L;
@XmlElement(required = true)
protected String korte;
public String getKorte() {
return korte;
}
public void setKorte(String korte) {
this.korte = korte;
}
}