Jaxb - 如何将一个 xml 元素解组到多个字段?

发布于 2024-11-24 20:25:55 字数 439 浏览 0 评论 0原文

xml:

<代码><根>; <元素>值(某物)

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

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

java:

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

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

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

xml:

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

I need to unmarshall this xml to two different fields in my java class.

I tried the following but it didn't work. the first field had the right value and the second one was null.

java:

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

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

How can I achieve this without creating a class to hold both values and map that to "element"?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

¢蛋碎的人ぎ生 2024-12-01 20:25:55

您可以注释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();
}

You may annotate setters and not fields, and then make setter parse value to two fields:

@XmlElement(name="element") 
void setElement(String value) {
    // parse value
    StringTokenizer st = new StringTokenizer(value, "()");
    this.one = st.nextToken().trim();
    this.two = st.nextToken().trim();
}
再可℃爱ぅ一点好了 2024-12-01 20:25:55

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

为什么不使用这种 xml 格式:

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

i think it's a bad practice, because the unmarchalling system play with markers separators only. You can split the line after unmarchalling the xml.

Why not use this xml format :

<root><elements><element>value</element><element>something</element></elements></root>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文