2010-05-05 4 views
1

Comment analyser un document XML contenant des nœuds dans lesquels les traits de soulignement sont présents?Analyse XML avec des nœuds contenant des traits de soulignement

<some_xml> 
    <child_node> 
     <child width_info="" height_info="" /> 
    </childnode> 
</some_xml> 

J'ai essayé ceci:

for each (var item:XML in Environment._XMLData.some_xml.child_node.child){ 
    trace([email protected]_info); 
} 

Mais que does'nt semblent fonctionner. Je ne peux pas changer le XML non plus parce que c'est un tiers. Toute aide est la bienvenue. Merci d'avance!

+2

Je pense que le trait de soulignement est pas la raison, il est un caractère juridique tout au long de XML. – Dormilich

+1

avez-vous essayé (simplement pour le débogage) en utilisant un fichier xml similaire sans caractères de soulignement? Vous avez probablement un autre problème. Comme l'a dit Dormilich, les caractères de soulignement sont valides dans les noms de balises/champs xml – Akusete

+0

Yep. J'ai déjà fait un test, avec exactement le même code ci-dessus et ça ne marche pas. Semble être le trait de soulignement parce qu'une fois que je l'enlève, cela fonctionne. – alvincrespo

Répondre

3

Le problème est que some_xml est votre nœud racine, de sorte que vous n'avez pas besoin d'inclure cela.

Cela devrait fonctionner:

for each (var item:XML in Environment._XMLData.child_node.child){ 
    trace([email protected]_info); 
} 
0

La chose à retenir est que .node et .ATTRIBUTE sont des raccourcis pour .child (« NODE ») et .attribute (« Attribute ») respectivement (selon Traversing XML structures (c/o the livedocs)

Je pense donc que quelque chose le long de la lignes de ce qui suit travailleraient (le code est non testé, mais la théorie devrait être son)

for each (var item:XML in Environment._XMLData.child("child_node").child){ 
    trace([email protected]_info); 
} 

Remarque, si l'attribut est pas défini, vous obtiendrez une erreur de temps d'exécution -. vous pouvez éviter cela en soit faire:

if(child.hasOwnProperty("width_info")) 
    trace([email protected]_info); 

ou tout simplement utiliser l'attribut

trace(child.attribute("width_info")); 
Questions connexes