2010-11-22 12 views
4

J'ai un format XML à analyser. Un exemple de fichier est répertorié ci-dessous:Comment puis-je décrire une référence dans un nœud à un autre?

<?xml version="1.0" encoding="UTF-8"> 
<root> 
    <parent name="example1"> 
    <childdef ref="1" type="a" /> 
    <childdef ref="3" type="c" /> 
    </parent> 

    <parent name="example2"> 
    <childdef ref="1" type="b" /> 
    <childdef ref="2" type="b" /> 
    </parent> 

    <child id="1" name="Child 1" /> 
    <child id="2" name="Child 2" /> 
    <child id="3" name="Child 3" /> 
    <child id="4" name="Child 4" /> 
</root> 

Les parent éléments contiennent au moins un élément childdef qui fait référence à un élément enfant. Vous devez utiliser une référence, car un enfant peut être référencé par plusieurs parents (voir l'enfant 1).

Si j'utilise maintenant un mappeur XML (par exemple une implémentation JAXB), j'aimerais avoir une référence Object de Parent1 à Child 1. Maintenant, je n'ai plus que l'identifiant de référence en tant qu'attribut.

Est-il possible de définir cette référence d'objet dans le XSD?

Répondre

5

Oui, c'est possible. Voir @XmlID et @XmlIDREF. Ils correspondent aux types XML xsd:id et xsd:idref. Mais gardez à l'esprit que seules les chaînes peuvent être des ID.

+0

Merci! Cela m'aidera. Est-il possible de spécifier le type de l'objet référencé? Maintenant, JAXB ne donne qu'un objet ... – guerda

+0

Je ne comprends pas. '@XmlIDREF' peut être sur un champ de n'importe quel type qui a' @ XmlID'. – musiKk