2009-11-12 9 views
0

Je reçois un objet de retour d'ASP.NET, et lors du suivi du XML comme suit:objets XML Parsing AS3

var xml:XML = new XML(event.message.body); 
trace(xml); 

Je reçois la sortie suivante:

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://localhost:49329/"> 
    <string>One</string> 
    <string>Two</string> 
    <string>Three</string> 
</ArrayOfString> 

Je suis en train Itérer la structure pour obtenir les cordes extraites, mais en vain. J'utilise le code suivant:

for each(var item:Object in xml.children()) 
{ 
    MonsterDebugger.trace(this, item.toString()); 
} 

... et je sais que ce n'est pas entièrement efficace. Cela fonctionne maintenant, mais il existe un moyen d'obtenir les chaînes avec une certaine syntaxe en utilisant le signe @.

Quelqu'un peut-il vous conseiller?

+0

Est-ce que cela a quelque chose à voir avec l'espace de noms? Merci! –

Répondre

1
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://localhost:49329/"> 
    <string>One</string> 
    <string>Two</string> 
    <string>Three</string> 
</ArrayOfString> 

Vous devez prendre soin de l'espace de noms aussi:

var ns:Namespace = new Namespace("http://localhost:49329/"); 
var strings:XMLList = xml.ns::string; 
for each(var str:XML in strings) 
    trace(str.text()); 
+0

Je pensais que, darn !!! Il a gaspillé environ 2 heures de ma journée. Merci pour la réponse!!! –

+1

seulement 2 heures? J'ai perdu plus d'une journée en tirant mes cheveux sur les espaces de noms;) – Amarghosh

+0

Hehehe! Respecte l'homme! Vous avez ma plus sincère sympathie. :) –

2

Vous l'avez vraiment compris. Doit être capable d'écrire la même boucle comme ceci:

for each(var el:XML in xml.string) { 
    trace(el.toString()); 
} 

Jetez un oeil à ces e4x docs, ceux-ci sont pour Flex, mais tout cela s'applique parce qu'il est juste AS3. Comme vous pouvez le voir l'état de la documentation sur beaucoup de ce genre de choses est un peu squameuse :)

+0

C'est exactement ce qui m'embrouille tellement aujourd'hui, quand j'essaie comme ça, comme je l'ai fait la plupart d'aujourd'hui, je n'ai rien du tout? –

+0

Ah, oui. J'ai manqué l'espace de noms dans le 'ArrayOfString' :) – rfunduk