我对JAXB当前从.xsd文件生成java对象的方式遇到了一些麻烦。下面是我正在使用的.xsd文件中的一段代码。这段代码的目的是要有一个LogicalDevices的列表,这些LogicalDevices是包含各种信息的对象。
<xs:element name="LogicalDeviceList">
<xs:annotation>
<xs:documentation>List of all LogicalDevices currently added for the application</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="LogicalDevice" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>An added logical device</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="DeviceDefinitionId" use="required">
<xs:annotation>
<xs:documentation>The DeviceDefinitionId of the Logical device</xs:documentation>
.......... Other LogicalDevice Information
当前,JAXB解析器创建一个对象,其中LogicalDevices不是LogicalDevices的列表,而LogicDevices返回DeviceDefinitionId的列表。
由于我正在接收和解封的XML无论如何都无法更改,有没有办法解决这个问题?是否只需将.xsd文件更改为以这样的方式读取就可以了
更新:下面的修改不起作用。2013年5-24
<xs:element name="LogicalDeviceList" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>List of all LogicalDevices currently added for the application</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="LogicalDevice">
<xs:annotation>
<xs:documentation>An added logical device</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="DeviceDefinitionId" use="required">
<xs:annotation>
<xs:documentation>The DeviceDefinitionId of the Logical device</xs:documentation>
如果是的话,那么为什么C#.xsd解析器按照预期从原始xsd生成对象和列表,而JAXB却没有。
对于XML架构片段:
<xs:element name="LogicalDeviceList">
<xs:annotation>
<xs:documentation>List of all LogicalDevices currently added for the application</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="LogicalDevice" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>An added logical device</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="DeviceDefinitionId" use="required">
<xs:annotation>
<xs:documentation>The DeviceDefinitionId of the Logical device</xs:documentation>
...
您将获得如下所示的类结构,其中LogicalDeviceList
类有一个LogicalDevice
实例的集合。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"logicalDevice"
})
public static class LogicalDeviceList {
@XmlElement(name = "LogicalDevice")
protected List<LogicalDeviceList.LogicalDevice> logicalDevice;
JAXB可能与C#生成的内容不完全匹配,但它是XML模式的一种完全可以接受的表示形式。
我正在开发一个graqphqlapi,它通过Mongoose从MongoDB获取数据。现在我遇到的问题是GraphQL不使用查询来解析字段,而是使用字段解析程序,因为没有设置ID,所以字段解析程序无法工作。 TypeDefs: 解析程序: 功能: 查询: 结果:
B/src/main/gen pom.xml 我想在B项目中从XSD生成类,它存在于一个项目中 在B项目的pom.xml中,我有:
我有我的xml模式定义如下 我使用maven-jaxb2-plugin根据这个xsd生成Java类。 生成代码后,我发现所有元素都有@xmlement注释(required=true)。为什么?我有许多minOccurs=“0”元素。为什么元素上总是添加required=true。
我是JavaFX新手,在使用setOnMouse点击方法时遇到了问题。在下面的代码中,我尝试在嵌套循环中添加一个事件处理程序,为创建的每个矩形分配一个事件处理程序,单击鼠标后,该事件处理程序将矩形变为灰色。它似乎根本不起作用,我不知道为什么。我是否遗漏了需要添加的内容? 编辑:这是FXML内容,根节点只是一个空白窗格 此外,自定义屏幕类定义了循环中使用的2d座位数组
问题内容: 我有一个巨大的QuickBooks SDK .XSD模式文件,该文件定义了我可以从QuickBooks发送/接收的XML请求/响应。 我希望能够轻松地从这些.XSD文件生成Java类,然后将其用于将XML编组为Java对象,以及将Java对象编组为XML。 是否有捷径可寻…? 理想情况下,它在运行时不需要基本Java发行版外部的任何库。但是我很灵活 问题答案: JAXB确实可以满足您的
myType也被定义为complexType。然后得到生成的类MyResponse.java和Reference.java。我可以通过以下方式分配“引用”的值: 而且奏效了。 现在我只是删除了maxOccurs=“unbounded”,它不再起作用了。响应不再是List类型,而是JaxBelement类型。我试着用: 谁能告诉我,当它不是一个列表时,什么是正确的做法?