J'utilise le tutoriel ici pour comprendre JAXB.
Lorsque le rédacteur vient de créer la racine du document, le rédacteur commence comme suit:
//This statement means that class "Bookstore.Java" is the root-element of our example
@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")
public class Bookstore {
...
}
Bien que je vais générer manuellement mes classes plutôt que de laisser Eclipse le faire, je fournirai un XSD
avec mon fichier jar (non emballé à l'intérieur mais plutôt dans le dossier contenant le fichier jar) afin que lorsque mon application démarre, il validera si le document XML a été falsifié.
Ainsi, dans le fichier XSD, le targetNamespace
sera de.vogella.xml.jaxb.model
Car il a été déclaré ci-dessus comme @XmlRootElement(namespace = "de.vogella.xml.jaxb.model")
?
Je recommande d'utiliser le niveau de package @XmlSchema
annotation pour spécifier la qualification d'espace de noms pour votre modèle. Une annotation au niveau du package va dans une classe spéciale appelée package-info
qui contient le contenu exact comme indiqué ci-dessous. Cette annotation signifie que tous les éléments de votre document sans espace de noms explicite donné utiliseront cet espace de noms.
org/example/foo/package-info.Java
@XmlSchema(
namespace = "http://www.example.org/foo",
elementFormDefault = XmlNsForm.QUALIFIED)
package org.example.foo;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Substitution de l'espace de noms
@XmlSchema
pour toutes les propriétés d'une classe utilisant le @XmlType
annotation.@XmlRootElement
ou @XmlElement
annotation.Pour plus d'informations
L'annotation @XmlRootElement peut être utilisée pour mapper un type de classe ou d'énumération au type XML.
Lorsqu'une classe de niveau supérieur ou un type d'énumération est annoté avec l'annotation @XmlRootElement, sa valeur est alors représentée en tant qu'élément XML dans un document XML.
Suivez l'exemple ci-dessous pour avoir plus d'idée:
associer un élément au type de schéma XML
// Example: Code fragment
@XmlRootElement
class Point {
int x;
int y;
Point(int _x,int _y) {x=_x;y=_y;}
}
//Example: Code fragment corresponding to XML output
marshal( new Point(3,5), System.out);
<!-- Example: XML output -->
<point>
<x> 3 </x>
<y> 5 </y>
</point>