【问题标题】:Jaxb - how do i unmarshal one xml element to multiple fields?Jaxb - 我如何将一个 xml 元素解组到多个字段?
【发布时间】:2011-10-08 11:37:38
【问题描述】:

xml:

<root> <element>value (something)</element> </root>

我需要将此 xml 解组到我的 java 类中的两个不同字段。

我尝试了以下方法,但没有成功。第一个字段的值正确,第二个字段为空。

java:

@XmlElement(name="element")
@XmlJavaTypeAdapter(TakeValueBeforeParentheses.class)
private String one;

@XmlElement(name="element")
@XmlJavaTypeAdapter(TakeValueInParentheses.class)
private String two;

如何在不创建一个类来保存两个值并将其映射到“元素”的情况下实现这一点?

【问题讨论】:

    标签: java xml jaxb marshalling unmarshalling


    【解决方案1】:

    我认为这是一种不好的做法,因为无序系统仅使用标记分隔符。您可以在解组 xml 后拆分行。

    为什么不用这种xml格式:

    <root><elements><element>value</element><element>something</element></elements></root>
    

    【讨论】:

    • xml端不受我控制。
    【解决方案2】:

    你可以注释setter而不是字段,然后让setter解析值到两个字段:

    @XmlElement(name="element") 
    void setElement(String value) {
        // parse value
        StringTokenizer st = new StringTokenizer(value, "()");
        this.one = st.nextToken().trim();
        this.two = st.nextToken().trim();
    }
    

    【讨论】:

    • 不完全是我希望的解决方案,但效果很好:) ty
    猜你喜欢
    • 2015-05-13
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多