如何解组空元素为空字符串与JAXB
问题描述:
有这样的伪代码:如何解组空元素为空字符串与JAXB
Alma alma = new Alma();
alma.setKorte(""); //Korte is a string member
marshaller.marshal(alma, stringwriter);
System.out.println(stringwriter.toString());
而且它产生的输出(我知道这是某种诡计的空元素是存在的,但这是它是如何工作在我的系统,所以有人在我之前已经将这个好像是这样):
<alma><korte/></alma>
这对我来说是好的。但是当我解组时,空字符串没有正确解组,但korte将为空。如何让jaxb将空元素解组为空字符串?
我使用JDK6捆绑jaxb。
编辑:
母校类是什么样子(类的名称改变,但它是这样的):
@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实现的较新版本。
下面的例子使用JDK 1.6.0_20和EcliseLink JAXB (MOXy) 2.3中包含的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());
}
}
输出
0
阿尔玛
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;
}
}
+0
是的,这是真的。原来,代码的其他部分使其为空。 :) –
什么的'Alma'类是什么样子? – skaffman
查看编辑的问题 –