2010-10-29 3 views
2

J'essaye d'analyser XML à partir du service SharePoint (listes) en utilisant jquery. J'ai l'objet XMLHttpRequest xData qui contient la propriété responseXML, qui est IXMLDOMDocument2.Problème lors de l'analyse xml avec jquery

xData.responseText a valeur suivante:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<GetListItemsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"><GetListItemsResult> 
<listitems xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' 
     xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' 
     xmlns:rs='urn:schemas-microsoft-com:rowset' 
     xmlns:z='#RowsetSchema'> 
    <rs:data ItemCount="2"> 
     <z:row ows_Title='Bosna i Hercegovina' ows_MetaInfo='1;#' ows__ModerationStatus='0' ows__Level='1' ows_ID='1' ows_owshiddenversion='1' ows_UniqueId='1;#{05EC6AB5-D1C6-4CCE-8B70-5FF7B922AE6A}' ows_FSObjType='1;#0' ows_Created='2010-10-29 15:59:59' ows_FileRef='1;#sites/state/Lists/CountryOfResidence/1_.000' /> 
     <z:row ows_Title='Hrvatska' ows_MetaInfo='2;#' ows__ModerationStatus='0' ows__Level='1' ows_ID='2' ows_owshiddenversion='1' ows_UniqueId='2;#{45FA88C3-17AF-4135-A926-6BE0C878EAAF}' ows_FSObjType='2;#0' ows_Created='2010-10-29 16:02:18' ows_FileRef='2;#sites/state/Lists/CountryOfResidence/2_.000' /> 
    </rs:data> 
    </listitems> 
</GetListItemsResult> 
</GetListItemsResponse> 
</soap:Body> 
</soap:Envelope> 

J'utilise le code suivant:

$(xData.responseXML).find("z:row").each(function() { 
    var liHtml = "" + $(this).attr("ows_Title") + ""; 
    alert(liHtml); 
    $("#tasksUL").append(liHtml); 
    }); 

qui, en fait, ne fait rien. C'est parce que $ (xData.responseXML) .find ("z: row"). Longueur est 0, et seulement $ (xData.responseXML) .find ("*") a une longueur autre que 0 (8 dans ce cas). Donc, mon problème est que jquery trouve une fonction qui ne reconnaît pas les nœuds xml que j'ai, et je ne trouve pas que quelqu'un ait eu un problème similaire.

Répondre

1

Vous devez échapper au côlon. See the docs for more info.

Essayez ceci:

$(xData.responseXML).find("z\\:row") 

Aussi, je pensais qu'il y avait un problème avec dans les versions de côlons jQuery avant 1.4.3, mais je ne peux pas trouver cette question en ce moment. Si vous rencontrez toujours des problèmes et que vous utilisez une version antérieure, essayez de mettre à niveau.

+0

Merci, j'ai complètement oublié que le colon est un méta-caractère. –

+0

@obrad - De rien. : o) – user113716

1

Aussi dans Safari et Firefox cela ne fonctionnera pas. Vous devez utiliser:

$(xData.responseXML).find("[nodeName=z:row]") 

Espérons que cela aide quelqu'un - a pris un certain temps pour l'écrou!