2011-09-14 1 views
0

En supposant que l'on ait un bean avec un ensemble d'attributs hiérarchiques, XMLBeans fournit-il un moyen de déterminer si ce bean a certaines valeurs pour un sous-ensemble de ces attributs? La meilleure façon de résoudre ce problème est de créer un autre bean avec l'ensemble des attributs et des valeurs que vous recherchez, et de voir si votre bean contient les mêmes attributs (et les valeurs de ces attributs) que celui que vous avez configuré . Par exemple, considérons que vous avez une liste de personnes XML et que vous voulez trouver des personnes avec des cheveux bruns. Vous pouvez configurer un haricot en tant que tel:Existe-t-il un moyen simple de comparer les attributs XML en utilisant XMLBeans?

<person hair="brown" /> 

et trouver les éléments dans votre liste qui contiennent essentiellement que le haricot comme un sous-ensemble. Je pourrais le faire en itérant récursivement à travers la hiérarchie des attributs du test bean (dans ce cas, la personne avec les cheveux bruns), et vérifier si chaque bean de la liste contient cet attribut, et a cette valeur pour cela. Mais cela semble être une tâche courante, et je voulais savoir si la bibliothèque XMLBeans fournissait déjà cette fonctionnalité.

Répondre

0

Je ne sais pas ce qu'est un attribut hiérarchique est, mais je sais que vous pouvez interroger le XML original en utilisant XPath:

//person[@hair='brown'] 

pour obtenir tous les éléments de personne avec un « poil » attribue égal à « brun '. Et je pense que vous pouvez exécuter des expressions XPath contre le XMLBeans XMLObject (ou était-ce XQuery ?, mais ce serait presque la même chose), donc, oui, XMLBeans a déjà cette fonctionnalité. Autant que je me souvienne, vous obtiendrez une liste de XMLObjects en arrière, mais je ne sais pas si ceux-ci pourraient être moulés à leurs classes Java mappées particulières ou pas. Bête étrange, XMLBeans! Nous sommes passés à JAXB et n'avons aucun regret.

+0

Par "attribut hiérarchique", je veux dire simplement un attribut qui a des attributs. Je vais voir ce que je peux faire avec XQuery/XPath. – david

Questions connexes