我正在尝试使用jquery从SharePoint服务(列表)解析xml。 我有XMLHttpRequest对象xData,它包含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节点,我发现没有人有类似的问题。
答案 0 :(得分:1)
你需要逃脱冒号。 See the docs for more info.
试试这个:
$(xData.responseXML).find("z\\:row")
另外,我认为在1.4.3之前的jQuery版本中存在冒号问题,但我现在无法找到该问题。如果您仍然遇到问题并且使用的是旧版本,请尝试升级。
答案 1 :(得分:1)
同样在Safari和Firefox中,这不起作用。你需要使用:
$(xData.responseXML).find("[nodeName=z:row]")
希望这有助于某人 - 花了一段时间坚持下去!