繁体   English   中英

使用 JAXB 解组到 POJO 后,列表返回为 null

List coming back as null after unmarshalling into a POJO using JAXB

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用 JAXB 将 XML 解组为 Java POJO,除列表(listId1 和 listId2)外,所有元素都被很好地解组,以下是 xml、pojo 类和业务类。

<?xml version="1.0" encoding="UTF-8"?>
<abacus-1.0-snapshot xmlns="urn:xxxxxxx">
    <rules>
        <rule>
            <name>rule1</name>
            <errorType>WARNING</errorType>
            <flag>true</flag>
            <startDate>2020-05-19</startDate>
            <listId1>
                <id>100101</id>
                <id>100102</id>
            </listId1>
            <listId2>
                <id>100103</id>
                <id>100104</id>
            </listId2>
        </rule>
        <rule>
            <name>rule2</name>
            <errorType>ERROR</errorType>
            <flag>false</flag>
            <startDate>2020-05-20</startDate>
            <listId1>
                <id>100105</id>
                <id>100106</id>
            </listId1>
            <listId2>
                <id>100107</id>
                <id>100107</id>
            </listId2>
        </rule>
    </rules>
</abacus-1.0-snapshot>

将 <rules> 元素映射到 Rules.java 的 Rules.java

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "rules", namespace = "urn:xxxxxxx")
public class RulesPOJO
{

    @XmlElement(name = "rule", namespace = "urn:xxxxxxx")
    private final List<rulePOJO> rulesPOJO = new ArrayList<rulePOJO>();

    public List<rulePOJO> getRulesPOJO()
    {
        return rulesPOJO;
    }
}

Rule.java 类,用于将 <rule> 元素映射到 Rule.java

@XmlAccessorType(XmlAccessType.NONE)
public class RulePOJO
{

    @XmlElement(namespace = "urx:xxxxx")
    private final String name = null;
     
    @XmlElement(namespace = "urx:xxxxx")
    private final String errorType = null;
    
    @XmlElement(namespace = "urx:xxxxx")
    private final Date startDate = null;
    
    @XmlElement(name = "listId1", namespace = "urx:xxxxx")
    private final List<Long> listId1 = new ArrayList<>();
    
    @XmlElement(name = "listId2", namespace = "urx:xxxxx")
    private final List<Long> listId2 = new ArrayList<>();

    public String getName()
    {
        return name;
    }

    public errorType getErrorType()
    {
        return errorType;
    }

    public Boolean getFlag()
    {
        return flag;
    }

    public Date getStartDate()
    {
        return startDate;
    }

    public List<Long> getListId1()
    {
        return listId1;
    }

    public List<Long> getListId2()
    {
        return listId2;
    }
}

用于将 xml 解组到 pojo 中的业务类

public class Retriever() throws JAXBException
    {
        Document document = Configuration.load(URI.create("urn:xxxxxx"));

        Unmarshaller unmarshaller = JAXBContext.newInstance(RulesPOJO.class).createUnmarshaller();
        RulesPOJO rulesPOJO = (RulesPOJO) unmarshaller
                .unmarshal(document.getElementsByTagName("Rules").item(0));
        for(RulePOJO rulePOJO : RulesPOJO.getRulesPOJO())
        {
            // the following are coming back null
            List<Long> listId1 = rulePOJO.getListId1();
            List<Long> listId2 = rulePOJO.getListId2();
        }
    }

谢谢!

1 个回复

正如评论中所讨论的, id是要被视为 arraylist 的重复元素,如给定链接https://howtodoinjava.com/jaxb/xmlelementwrapper-annotation/ 中所述 您可以使用XMLElementWrapperXMLElement类型的注释来表示包装器和子元素。

1 使用JAXB解组返回null

我执行main时试图解组时出现nullpointer异常。 是这样吗? 我已经代表所有类正确地注释了它们。 我有一个uaaoperationslist,其中包含uaa操作的列表,然后依次包含一些id和操作的列表。 ...

2014-05-06 07:37:30 1 58   xml
2 jaxb在解组后返回null值

我正在尝试解组XML,并且它返回空值XML: 豆角,扁豆: 取消编组: 我查看了以下帖子,以避免重复的问题JAXB解组返回空值 JAXB解组返回Null ...

3 JAXB解组返回null

我试图解组已编组的XML文件,但在打印时它返回null。 XML文件: XML包装器: 被插入到PresentieLijstWrapper.set中的“ Les”类作为ObservableList: 解组函数: 我看过许多其他的stackover问题和一些教 ...

4 使用JaXB解组后得到null吗?

我下面有XML。 POJO类: package-info.java AlexaResult 但是我正在得到result.getAlexaResponse().getAlexaHistoryResult()为null吗? 我有什么想念的吗? 谢谢! ...

5 JAXB解组为属性返回null

我正在尝试从SDMX RESTfull服务解组流。 Xml是: curl“ http://sdmx.istat.it/SDMXWS/rest/dataflow/IT1/101_1015/1.2” 我制作了一个POJO来表示(带有getter,setter,costructor和相应的 ...

6 使用JAXB解组列表

我知道这是一个初学者的问题,但是我已经将头撞在墙上两个小时了,试图解决这个问题。 我从看起来像以下的REST服务(Windows Azure管理API)返回了XML: 当我尝试使用JAXB取消封送处理时,服务列表始终为空。 如果可能,我想避免编写XSD(Microsoft不提 ...

8 Jaxb解组返回null和单个对象

我正在尝试解组一个xml文件。 这是我下面的文件。 XML文件 JaxbHelper.java AccountInfo.java 我如何消耗元帅 我不确定是什么原因引起的,但是即使有多个帐户并且返回的数据为null,该对象也将作为单个对象 ...

9 使用JAXB解组通用列表

我有一个返回此XML的服务: 要么 我想使用这些类解组检索到的XML: 结果 : 项目 : 用户 : 首先不工作的解决方案 我得到一个空列表。 第二个没有工作的解 灵感来自本文http://blog.bdoughan.com/ ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM