繁体   English   中英

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

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

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

I am trying to unmarshall an XML into Java POJO using JAXB, all elements are getting unmarshalled fine except for the lists(listId1 and listId2), following is the xml, the pojo classes and the business class.

<?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 class 用于 map <rule> 元素到 Rule.Z93F725A04423FE1C886ZF

@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;
    }
}

业务 class 用于将 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、costructors 和相应的 ...

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