xml - Castor - 解码一个简单的重复组

标签 xml file mapping castor

我对此慢慢感到生气。我正在尝试像这样解码 XML 文档:

<GetDeadlineOffset>
    <deadlineCode>DC1</deadlineCode>
    <parameters>
      <parameter name="P1">Param 1</parameter>
      <parameter name="P2">Param 2</parameter>
    </parameters>
</GetDeadlineOffset>

我有一对简单的 POJO,GetDeadlineOffsetRequest 和 Parameter,如下所示:

public class GetDeadlineOffsetRequest {

    private String deadlineCode = null;
    private List<Parameter> parmList = new ArrayList<Parameter>();


    public GetDeadlineOffsetRequest() {
        // Do nothing
    }

    public String getDeadlineCode(){
        return this.deadlineCode;
    }

    public void setDeadlineCode(String deadlineCode){
        this.deadlineCode = deadlineCode;
    }

    public List<Parameter> getParameters() {
        return parmList;
    }

    public void setParameters(List<Parameter> parmList) {
        this.parmList = parmList;
    }

} 

public class Parameter {

    private String name = null;
    private String value = null;

    public Parameter() {
        // Do Nothing
    }

    public String getName() {
        return name;
    }

    public String getValue() {
        return value;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

我正在使用映射文件,但似乎无法将这些标签解码到我的参数列表中。

这是我最新的映射尝试:

<class name="mypkg.GetDeadlineOffsetRequest">
    <map-to xml="GetDeadlineOffset"/>
    <field name="DeadlineCode" type="java.lang.String">
        <bind-xml name="deadlineCode" node="element" />
    </field>
    <field name="Parameters" type="mypkg.Parameter" collection="collection">
        <bind-xml name="parameters" node="element" />
    </field>    
</class>
<class name="mypkg.Parameter">
    <map-to ns-uri="http://services.blah.com/AMM/Deadline/v1"/>
    <field name="Value" type="java.lang.String">
        <bind-xml name="parameter" node="element" /> 
    </field>
    <field name="Name" type="java.lang.String">
        <bind-xml name="name" node="attribute" location="parameter" />  
    </field>
</class>

问题似乎围绕以下事实展开: 是容器元素, 是可重复元素。上面的映射告诉 Castor 是可重复的。

这几天我一直在尝试各种映射组合,我想我已经走到了死角!

有人能看出我做错了什么吗?

我正在使用 Castor XML 1.3.2。

最佳答案

我已经通过以下映射取得了一些成功:

<class name="myPkg.GetDeadlineOffsetRequest">
    <map-to xml="GetDeadlineOffset"/>
    <field name="DeadlineCode">
        <bind-xml name="deadlineCode" />
    </field>
    <field name="parameters" type="myPkg.Parameter" collection="collection">
        <bind-xml name="parameter" location="parameters">
            <class name="myPkg.Parameter">
                <field name="Name">
                    <bind-xml name="name" node="attribute" />
                </field>
                <field name="Value">
                    <bind-xml node="text"/>
                </field>
            </class>
        </bind-xml>
    </field>        
</class>

诀窍是在几个bind-xml 元素上使用location="parameters"node="text"。我已使用此映射成功编码和解码。

关于xml - Castor - 解码一个简单的重复组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8398372/

相关文章:

php - 如何使用 PHP 从 XML 文件检索内容 - YouTube API

java - 解析xml文件的问题

php - 使用准备好的语句上传图像文件位置

java - 如何获取文件长度?

database - 错误 3004 : Problem in mapping fragment starting at line

c# - 在没有存储过程的情况下使用 c# 映射 Oracle UDT

java - 如何为 Dropwizard 应用程序构建 web.xml

xml - 使用XSLT 1.0映射外部数据的好方法

json - 我可以使用 jq 使用 JSON 文件中的参数来过滤和修改另一个 JSON 文件吗?

java - REST通过id和昵称获取用户