Проблема парсинга xml с помощью jquery - PullRequest
2 голосов
/ 29 октября 2010

Я пытаюсь проанализировать XML из службы SharePoint (списки) с помощью jquery. У меня есть объект xData XMLHttpRequest, который содержит свойство responseXML, которое является IXMLDOMDocument2.

xData.responseText имеет следующее значение:

    <?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>

Я использую следующий код:

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

, который на самом деле ничего не делает. Это связано с тем, что $ (xData.responseXML) .find ("z: row"). Length равно 0, и только $ (xData.responseXML) .find ("*") имеет длину, отличную от 0 (в данном случае 8)

Итак, моя проблема в функции jquery find, которая не распознает мои xml-узлы, и я не могу обнаружить, что у кого-то была подобная проблема.

Ответы [ 2 ]

1 голос
/ 01 марта 2011

Также в Safari и Firefox это не будет работать.Вам нужно использовать:

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

Надеюсь, это кому-нибудь поможет - потребовалось время, чтобы прекратить игру!

1 голос
/ 29 октября 2010

Вам нужно сбежать из толстой кишки. См. Документацию для получения дополнительной информации.

Попробуйте это:

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

Кроме того, я думал, что есть проблема с двоеточиями в версиях jQuery до 1.4.3, но я не могу найти эту проблему сейчас Если у вас все еще есть проблемы, и вы используете старую версию, попробуйте обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...