2011-03-22 2 views
0

J'utilise XMLBeans pour générer des objets Java à partir d'un schéma XSD. Le schéma est dans la structure suivante:Échec de l'instanciation de l'élément complexe imbriqué XMLBeans

<schema targetNamespace="" xmlns="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified"> 
    <element name="Father"> 
     <complexType> 
      <all> 
       <element name="Son"> 
        <complexType> 
         <all> 
          <element name="Target" type="string" /> 
         </all> 
        </complexType> 
       </element> 
      </all> 
     </complexType> 
    </element> 
</schema> 

Le schéma est compilé Allright et je suis en mesure d'instancier le Père par:

Father father = Father.Factory.newInstance(); 

Mais lorsque je tente de réaliser:

father.getSon().setTarget("Some String"); 

Je reçois une exception de pointeur null. Lors du débogage, j'ai vu que Son est nul (d'où l'exception). Tout ce que j'ai besoin est de définir la valeur "Cible", mais je ne pouvais pas trouver un moyen de le faire ....

Y at-il un moyen de construire automatiquement toute la structure XSD? Sinon, puis-je instancier le "Fils" manuellement et ensuite accéder à sa "cible"?

Merci beaucoup!

méthode O.J

Répondre

0

getSon() vous permet d'obtenir l'enfant existant appelé Fils. Si vous essayez de générer un nouveau fichier XML, vous devez commencer par un document vide. Ensuite, vous devriez ajouter vos éléments comme vous le souhaitez avant d'y accéder. Essayez ce code:

FatherDocument fatherDocument = FatherDocument.Factory.newInstance(); 
Father father = fatherDocument.addNewFather(); 
Son son = father.addNewSon(); 
son.setTarget("Some string"); 
StringWriter writer = new StringWriter(); 
fatherDocument.save(writer); 
System.out.println(writer.toString()); 

J'ai produit ce xml:

<Father><Son><Target>Some string</Target></Son></Father> 
+0

fonctionne comme une magie. C'est exactement ce que j'aurais dû faire. Merci! –