web-dev-qa-db-fra.com

Présentation de l'annotation JAXB @XmlRootElement

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")?

13
Little Child

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

  • Vous pouvez remplacer l'espace de noms donné dans le @XmlSchema pour toutes les propriétés d'une classe utilisant le @XmlType annotation.
  • Vous pouvez remplacer l'espace de noms pour un élément donné à l'aide de la propriété namespace sur le @XmlRootElement ou @XmlElement annotation.

Pour plus d'informations

24
bdoughan
  • 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>
3
Krutik