2011-09-01 6 views
1

Je veux analyser le code XML suivant qui est la réponse d'un webservice reposant:analyser la réponse xml webservice reposant avec javascript

<ns2:list xmlns="urn:foo1:foo" xmlns:ns2="foo2:foo"> 

    <entityData> 
     <namedAttributes>...</namedAttributes> 
     <dynamicEnums>...</dynamicEnums> 
    </entityData> 

    <ns2:employees> 
     <ns2:user id="test"> 
      <ns2:name genderTitle="0" firstName="Rock" surName="Solid"></ns2:name> 
     </ns2:user > 
    </ns2:employees> 
</ns2:list> 

Si je tente un XPath expression que je reçois seulement comme alerte [objet objet]:

function parse(xml){ 
    var test= $(this).find('/ns2:list/ns2:employees/ns2:user[85]/ns2:name'); 
    alert(test); 
}; 

Ajout .text() - méthode comme: test var = $ (this) .Find ('/ NS2: liste/NS2: employés/NS2: l'utilisateur [85]/NS2: nom'). texte(); ne rend l'alerte vide ...

L'expression xpath ne devrait pas être faux, j'ai utilisé Firebug pour obtenir l'expression, peut-être dans cet exemple une erreur de frappe.

Quelqu'un sait ce qui ne va pas? Ou l'inverse: comment alerter des champs comme firstName?

Répondre

0

vous devrez peut-être regarder .parseXML pour analyser le xml aussi ici est une bonne réponse SO pour analyser xml avec namespaces jQuery XML parsing with namespaces

ici est un bon lien trop Namespace Selectors for jQuery

solution

xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc), 
    $name = $xml.find("ns2\\:name").attr("surName"); 

    alert($name); 

ici id le violon http://jsfiddle.net/Jbnev/

+0

grâce ce travaille – zyrex

+0

heureux qui a aidé – Rafay

+0

@ 3nigma ne fonctionne pas, retourne undefined :( – user9371102

1

Vous avez probablement besoin d'ajouter l'espace de noms dans votre requête pour le nom.

Vous avez donc besoin quelque chose comme:

/*[local-name()='list' and namespace-uri()='urn:foo1:foo'] 
+0

wha Tu veux dire? au lieu de ns2: ...? – zyrex

+0

Edited ... peut-être aussi googling pour xpath et namespaces pourrait vous aider encore plus. –

1

Doesnt/liste/employés/user [@ id = 'test']/nom/@ work stripteaseuses?

Questions connexes