gpt4 book ai didi

java - JAXB 和同一元素中的多种内容类型

转载 作者:行者123 更新时间:2023-11-30 11:53:14 25 4
gpt4 key购买 nike

在 JAXB 中,是否可以定义以下情况:

<parameters>
<parameter name="param1">value1</param>
<parameter name="someCollection">
<parameters>
<parameter name="param2">value2</param>
<parameter name="param3">value3</param>
</parameters>
</parameter>
</parameters>

parameter 元素有时可以有一个简单的值(“value1”),有时它可以有其他元素(例如另一个 parameters 元素)。

谢谢!

最佳答案

您可以在 EclpseLink JAXB (MOXy) 中使用 @XmlPath 扩展,我是 MOXy 文本负责人。

@XmlPath 扩展将使您能够映射以下类:

package blog.predicate;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement(name="node")
@XmlType(propOrder={"firstName", "lastName", "address", "phoneNumbers"})
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {

@XmlPath("node[@name='first-name']/text()")
private String firstName;

@XmlPath("node[@name='last-name']/text()")
private String lastName;

@XmlPath("node[@name='address']")
private Address address;

@XmlPath("node[@name='phone-number']")
private List<PhoneNumber> phoneNumbers;

}

对于如下所示的 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<node>
<node name="first-name">Jane</node>
<node name="last-name">Doe</node>
<node name="address">
<node name="street">123 A Street</node>
</node>
<node name="phone-number" type="work">555-1111</node>
<node name="phone-number" type="cell">555-2222</node>
</node>

关于java - JAXB 和同一元素中的多种内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com