【问题标题】:Castor marshalling of name/value pair名称/值对的 Castor 编组
【发布时间】:2011-12-06 15:17:00
【问题描述】:

我有一个包含名称/值对的简单 POJO:

public class Parameter {

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

    public Parameter() {
        // Do Nothing
    }

    public Parameter(String name, String value) {
        this.name = name;
        this.value = value;
    }

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

}

我想将其编组为如下所示的 XML 结构:

<parameter name="P3">Parameter 3</parameter>

我尝试了一个看起来像这样的映射,但它不起作用:

<class name="pkg.Parameter">
    <field name="Name">
        <bind-xml name="name" node="attribute" />
    </field>
    <field name="Value">
        <bind-xml name="paramValue"/>
    </field>
</class>

它给了我这个:

<parameter name="P3">
  <paramValue>Parameter 3</paramValue>
</parameter>

差不多了,但价值显然放错了地方。本质上,我希望从 Parameter.getValue() 返回的值形成 元素的内容,而不是子元素。

这应该很简单,我相信它会很简单,但我似乎无法到达那里。

有什么想法吗?

【问题讨论】:

  • 如果你不能用 Castor 做,这里是用 JAXB 做的:blog.bdoughan.com/2011/06/…
  • 谢谢布莱斯。我需要研究 JAXB,但对于当前项目,我必须使用 Castor。正如你在下面看到的,我已经设法解决了这个问题。

标签: java xml marshalling castor


【解决方案1】:

哦,天哪。就好像花时间解释问题会重新组织你大脑中的一切,然后在点击“发布”后解决方案就会出现!

原来我需要做的就是改变

<field name="Value">
    <bind-xml name="paramValue"/>
</field>

<field name="Value">
    <bind-xml node="text"/>
</field>

完成后我现在看到了这个:

<parameter name="P3">Parameter 3</parameter>

史蒂夫

【讨论】:

  • 一位导师曾经称其为“木印印第安人”效应。就像 Cheers (bit.ly/oOXYCg) 的那个一样,一个优秀的木制印第安人会耐心地倾听问题,在你找到问题的症结之前什么也不说……到那时问题就解决了,既然你已经组织好了你的想法足以解释它。感谢您的木制印第安人并分道扬镳是可以接受的。
  • 我的一位导师称其为“纸板剪纸”效果,理由相同。不过我喜欢木制的印度变种。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多