gpt4 book ai didi

java - 从 xsd 为特定 xml 创建 JAVA 对象时获取 UnmarshalException

转载 作者:行者123 更新时间:2023-12-01 14:44:49 25 4
gpt4 key购买 nike

我正在使用 xsd 使用 maven-jaxb-plugin (com.sun.tools.xjc.maven2) 创建 java 对象。 从 XML 文件填充这些 JAVA 对象时,我收到以下错误。

javax.xml.bind.UnmarshalException: Unexpected element "Clients". Expected elements are "{http://www.company.com/enigma/utils/export}Clients".

XSD 具有以下结构,

targetNamespace="http://www.company.com/enigma/utils/export">
<xs:element name="Clients">
<xs:complexType>
<xs:sequence>
<xs:element name="Client">
<xs:annotation>
<xs:documentation>Client element represents Client in JSP pages and name attribute for it should be unique</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="column" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="header" use="required"/>
<xs:attribute type="xs:string" name="metaName" use="required"/>
<xs:attribute type="xs:string" name="dataType" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="useResource" use="required"/>
<xs:attribute type="xs:string" name="resourceFile" use="required"/>
</xs:complexType>
<xs:unique name="UniqueClientName">
<xs:selector xpath="Client"></xs:selector>
<xs:field xpath="@name"></xs:field>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

XML 如下所示,

<?xml version="1.0" encoding="UTF-8"?>
<Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Client name="ClientDetails" useResource="true">
<column header="ClientDetails.ClientName" metaName="name" dataType="String"/>
<column header="ClientDetails.PhysicalAddress" metaName="phyAddress" dataType="String"/>
<column header="ClientDetails.City" metaName="city" dataType="String"/>
<column header="ClientDetails.State" metaName="state" dataType="String"/>
</Client>
</Clients>

所有 JAXB 类都是使用 maven 生成的,位于 enigma/utils/export 文件夹中。我无法解决这个问题。请帮我解决这个问题。

最佳答案

请尝试下面的代码并提供生成的类包。 根据您的 xml,它应该是 com.enigma.utils.export

JAXBContext jaxbContext = JAXBContext.newInstance("com.enigma.utils.export");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

这可能会解决问题。

关于java - 从 xsd 为特定 xml 创建 JAVA 对象时获取 UnmarshalException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543465/

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