从文档很显然,我需要使用以下方法来得到一个简单的解组从我的XML文件/模式出现:意外JAXB错误
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
)。这不适合我。 编辑结束
下发生在我所有的类文件的顶部,包括那些在XJC JAXB Eclipse插件为我创造:
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架构newb,并提供给我)是:
<?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...>
我难倒。
编辑结束
啊。对不起忘了提及,我已经有了xjc创建了objectfactory.java文件 - 它与模式引用文件一起使用。我下一步去哪里? – volvox 2010-03-29 19:51:12
@Mark Lewis我需要一些关于类本身的更多信息。它看起来是一个架构验证问题,但没有看到类,我不知道我是否可以告诉你很多。 – 2010-03-29 20:10:09
感谢您的回答,我已经编辑了一些问题代码到我的问题中,以充实一点。也许这会更深入地说明我的问题。谢谢IA – volvox 2010-03-29 21:06:35