Ich verwende die tutorial here zum Verständnis von JAXB.Verständnis JAXB @ XmlRootElement Annotation
Wenn der Schreiber kommt die Wurzel des Dokuments zu erstellen, beginnt der Autor wie folgt:
//This statement means that class "Bookstore.java" is the root-element of our example
@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")
public class Bookstore {
...
}
Obwohl ich meine Klassen zu erzeugen wird manuell lassen, anstatt von Eclipse es tun, werde ich eine XSD
liefern mit Meine JAR-Datei (nicht im Inneren, sondern im JAR-Ordner), damit beim Start der Anwendung überprüft wird, ob das XML-Dokument manipuliert wurde.
Also, in der XSD-Datei, wird die targetNamespace
de.vogella.xml.jaxb.model
sein, weil es oben als @XmlRootElement(namespace = "de.vogella.xml.jaxb.model")
erklärt wurde?
Ah ich verstehe, was Sie sagen .... für eine Paket, das die verschiedenen XML-zu-Java-Klassen enthält, muss ich die Klasse 'package-info' erstellen und den obigen Inhalt nach Bedarf ändern? **Cool!**. Ich werde schauen, was du gesagt hast ** aber ** was ist mit meiner ursprünglichen Frage?:) War meine Inferenz korrekt? –
@LittleChild - Sie erhalten ein XML-Schema mit dem Namen 'de.vogella.xml.jaxb.model' als Ziel-Namespace, der das' bookstore' Element definiert. Das Problem besteht darin, dass die Klasse den in der Annotation "@ XmlRootElement" angegebenen Namespace nicht übernimmt, sodass sie in ein anderes XML-Schema generiert würden. –
grundsätzlich, weil 'elementFormDefault' nicht auf' qualifiziert' gesetzt ist? und oh, Schema wird auch von Hand geschrieben werden. –