gpt4 book ai didi

java - 我如何调整 JAXB 生成 Java 模型以获得我想要的 Java 代码?

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

这是我的 xml 模型:

<train xmlns="http://www.example.org/train/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<routes>
<route>Route1</route>
<route>Route2</route>
</routes>
</train>

我想创建一个 XSD 给我以下 java:

Train train = new Train(); 
train.getRoutes().add(new Route());

我尝试过不同的设计,例如百叶窗、俄罗斯娃娃、萨拉米香肠切片,但最终的结果总是 java 是这样的:

Train train = new Train(); 
train.getRoutes().getRoute().add("Route1");

这是我到目前为止尝试过的 xsd 文档:

百叶窗

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.example.org/train/">
<xs:element xmlns:tra="http://www.example.org/train/" name="train" type="tra:trainType"/>
<xs:complexType name="routesType">
<xs:sequence>
<xs:element type="xs:string" name="route" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="trainType">
<xs:sequence>
<xs:element xmlns:tra="http://www.example.org/train/" type="tra:routesType" name="routes"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

俄罗斯套娃

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.example.org/train/">
<xs:element name="train">
<xs:complexType>
<xs:sequence>
<xs:element name="routes">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="route" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

意大利腊肠片

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.example.org/train/">
<xs:element name="route" type="xs:string"/>
<xs:element name="routes">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:tra="http://www.example.org/train/" ref="tra:route" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="train">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:tra="http://www.example.org/train/" ref="tra:routes"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

谁能告诉我我做错了什么?

最佳答案

你很可能需要 @XmlElementWrapper 来拥有类似的东西

@XmlElementWrapper(name="routes")
@XmlElement(name="route")
List<Route> routes ...;

您可以使用 jaxb-xew-plugin为此目的。

看到这个答案:

How generate XMLElementWrapper annotation with xjc and customized binding

关于java - 我如何调整 JAXB 生成 Java 模型以获得我想要的 Java 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189830/

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