首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JAXB将空元素解组为空字符串

如何使用JAXB将空元素解组为空字符串
EN

Stack Overflow用户
提问于 2011-06-21 14:41:38
回答 1查看 2.8K关注 0票数 2

有一个伪代码,如下所示:

代码语言:javascript
运行
复制
Alma alma = new Alma();
alma.setKorte(""); //Korte is a string member
marshaller.marshal(alma, stringwriter);
System.out.println(stringwriter.toString());

它产生的输出(我知道这是某种把戏,空元素在那里,但这是它在我的系统中的工作方式,所以在我之前的人已经这样设置了):

代码语言:javascript
运行
复制
<alma><korte/></alma>

这对我来说没问题。但是当我对它进行解组时,空字符串没有正确解组,但是korte将为null。如何让jaxb将空元素解组为空字符串?

我使用JDK6捆绑的jaxb。

编辑:

alma类如下所示(类名已更改,但如下所示):

代码语言:javascript
运行
复制
@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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-21 21:22:07

JAXB实现应该将空元素解组为字符串属性的"“。解决方案是升级到包含此修补程序的较新版本的JAXB实现。

下面的示例适用于我使用JDK、1.6.0_20和EcliseLink JAXB (MOXy) 2.3中包含的JAXB版本。

演示

代码语言:javascript
运行
复制
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());
    }

}

输出

代码语言:javascript
运行
复制
0

Alma

代码语言:javascript
运行
复制
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;
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6421352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档