gpt4 book ai didi

java - 意外的 JAXB 错误

转载 作者:行者123 更新时间:2023-12-01 16:06:08 25 4
gpt4 key购买 nike

从文档中可以清楚地看出,我需要使用以下内容来从我的 XML 文件/架构中进行简单的解码:

JAXBContext jc = JAXBContext.newInstance("PackageName");

其中 PackageName 是我的包名称。我在谷歌上查了一下,但没有结果,想找出为什么我会收到这个运行时错误:

Line:Col[2:142]:cvc-elt.1: Cannot find the declaration of element 'myconfig'.
Line:Col[2:142]:unexpected element (uri:"http://www.w3.org", local:"myconfig"). Expected elements are <{}myconfig>
Caught UnmarshalException

编辑:注意:该插件强制我指定包名称。我给它提供了与我的所有应用程序类文件相同的包,因为我希望将所有 JAXB 类和我的应用程序放在一起。如果我的包是 PackageName,那么它会在 PackageName.PackageName 中创建所有 JAXB 类文件。然后,我必须将它们从 PackageName.PackageName (它自动创建)移回到我的应用程序所在的树中 (PackageName)。这对我来说感觉不对。编辑结束

以下内容出现在我的所有类文件的顶部,包括为我创建的 eclipse 的 XJC JAXB 插件:

package PackageName;

那么为什么会出现这个错误呢?

编辑:该架构非常大,因此我不想将其全部粘贴到此处,因此 ObjectFactory.java 文件也非常大。开始了

package PackageName;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;

结束

/**
* Create an instance of {@link JAXBElement }{@code <}{@link MyConfigType }{@code >}}
*
*/
@XmlElementDecl(namespace = "", name = "myconfig")
public JAXBElement<MyConfigType> createMyconfig(MyConfigType value) {
return new JAXBElement<MyConfigType>(_Myconfig_QNAME, MyConfigType.class, null, value);
}

所以一切都很标准。架构的顶部(我是一个 XML 架构新手,这是提供给我的),是:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" attributeFormDefault="unqualified">

看起来也很直接。根元素的架构如下:

<xs:complexType name="MyConfigType">
<xs:sequence>
<xs:element name="tips" type="TipType" minOccurs="0"
maxOccurs="unbounded">
<xs:key name="unique_abc_id">
<xs:selector xpath="./abc" />
<xs:field xpath="@id" />
</xs:key>
<xs:key name="unique_def_id">
<xs:selector xpath="./def" />
<xs:field xpath="@id" />
</xs:key>
</xs:element>
</xs:sequence>
<xs:attribute ref="noNamespaceschemaLocation" />
</xs:complexType>

我要求它在解码启动的同时验证提供的配置:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<myconfig xmlns="http://www.w3.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceschemaLocation="myconfig.xsd">
<firsttag...>

我被难住了。

编辑结束

最佳答案

为此,请执行以下操作:

JAXBContext jc = JAXBContext.newInstance("PackageName");

您需要具备以下一项或两项:

  • 该目录中的 ObjectFactory.class
  • jaxb.in​​dex 文件。该文件应包含该包中的类名列表。

其中任何一个都会描述 JAXB 应该可用的类。

关于java - 意外的 JAXB 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539792/

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