De la documentation, il est clair que je dois utiliser les éléments suivants pour obtenir d'un simple unmarshalling de se produire à partir de mon fichier XML/schéma:erreur inattendue JAXB
JAXBContext jc = JAXBContext.newInstance("PackageName");
où PackageName est mon nom de package. Je l'ai regardé sur google pour un peu vain, pour savoir pourquoi je puis obtenir cette erreur d'exécution:
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
EDIT: Note: le plugin m'a forcé de spécifier un nom de package. Je lui ai donné le même paquet que tous les fichiers de mes classes d'application car je voulais que toutes les classes JAXB et mon application soient ensemble. Si mon package est PackageName
, il a ensuite créé tous les fichiers de classe JAXB dans PackageName.PackageName
. J'ai ensuite dû les déplacer sur PackageName.PackageName
(qu'il a créé automatiquement) dans l'arborescence où mon application est (PackageName
). Cela ne me semble pas juste. EDIT FIN
Ce qui suit se produit au-dessus de tous mes fichiers de classe, y compris ceux que le plugin XJC JAXB pour eclipse créé pour moi:
package PackageName;
alors pourquoi est cette erreur qui se produisent?
EDIT: Le schéma est assez grand, donc je ne veux pas coller tout ici, et le fichier ObjectFactory.java
est par conséquent assez grand. Il commence
package PackageName;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;
et se termine
/**
* 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);
}
Donc tout à fait standard. Le haut du schéma (je suis un schéma XML newb et cela m'a été fourni à), est:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" attributeFormDefault="unqualified">
qui semble aussi simple. Le schéma de l'élément racine est la suivante:
<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>
La configuration fournie que je vais lui demander de valider en même temps que commence désorganiser:
<?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...>
Je suis perplexe.
EDIT FIN
Ah. Désolé d'avoir oublié de mentionner que j'avais déjà créé xjc le fichier objectfactory.java - c'est dans les fichiers de référence du schéma. Où vais-je ensuite? – volvox
@ Mark Lewis J'ai besoin de plus d'informations sur les classes elle-même. Il regarde un problème de validation de schéma mais sans voir la classe je ne sais pas si je peux te dire beaucoup. –
merci pour la réponse, j'ai édité un code de problème dans ma question pour le peaufiner un peu. Peut-être que cela illustrera mon problème plus en profondeur. Merci IA – volvox