代码之家  ›  专栏  ›  技术社区  ›  Goran Obradovic

用jquery分析XML时出现问题

  •  2
  • Goran Obradovic  · 技术社区  · 14 年前

    我正在尝试使用jquery从SharePointService(列表)解析XML。 我有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 回复  |  直到 11 年前
        1
  •  1
  •   user113716    14 年前

    你需要逃离结肠。 See the docs for more info.

    试试这个:

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

    另外,我认为1.4.3之前的jquery版本中存在冒号问题,但我现在找不到该问题。如果仍有问题,并且使用的是旧版本,请尝试升级。

        2
  •  1
  •   user229044    14 年前

    同样,在Safari和Firefox中,这也不起作用。您需要使用:

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

    希望这有助于某人-花了一段时间才发疯!