7
votes

Lire l'espace de noms non standard XML utilisant E4X dans AS3?

J'essaie d'analyser certains XML dans AS3 que je reçois à travers un appel Webservice à C #. C # est sérialisé à l'aide d'un datacontract afin que l'espace de noms est non standard.

Voici ce que le XML ressemble à: strong> p> xxx pré>

afin que vous puissiez voir à partir de celui-ci, j'ai un utilisateur qui consiste en un email, mot de passe , Détails de référence et userdetails. P>

Voici où je l'analyse et le problème: strong> p> xxx pré>

Voici une photo d'écran dans la vue de débogage (Copier le lien et Re-voir pour le voir plus gros): p>

text alt p>

SANS E4X, je peux le faire fonctionner comme ça, mais c'est vraiment maladroit: strong> p> xxx pré>

capture d'écran: p>

texte alt p>

Heres la solution forte> p>

var xmlNamespace:Namespace = new Namespace( // namespace in here );         

            var resultXml:XML = new XML(event.result);          

            var email:XMLList = resultXml.xmlNamespace::Email;

            var emailString:Object = email.xmlNamespace::EmailString.text().toString();


0 commentaires

3 Réponses :


0
votes

Essayez ceci:

var email:XMLList = resultXml..Email;

//access the user email
var userEmail:String = String[email.EmailString];


1 commentaires

non. Pas de bien :( J'ai posté un coup d'écran montrant que cela ne fonctionne pas.



5
votes

Vous devez utiliser le nom complet (y compris l'espace de noms) lorsqu'il existe des espaces de noms impliqués.

default xml namespace = new Namespace("http://schemas.datacontract.org/2004/07/UserDatabaseManipulation.POCO");

var resultXml:XML = new XML(event.result);  
var email:Object = resultXml.Email;


0 commentaires

1
votes
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest xmlns="http://ns.adobe.com/f4m/1.0">
        <id>
    video_400
        </id>
        <streamType>
            recorded
        </streamType>
        <duration>
        87.823999999999998
        </duration>
        <bootstrapInfo profile="named" id="bootstrap9368">
        <metadata>
            ele mele
         </metadata>
        </bootstrapInfo>
    </manifest>



var xmlData:XML = new XML(loader.content as String) ;
var f4mNs : Namespace = xmlData.namespace();
trace(this + " onQueueComplete DURATION= " + xmlData.f4mNs::duration);

0 commentaires