從文檔很顯然,我需要使用以下方法來得到一個簡單的解組從我的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