0

在 .aspx 页面中运行的 JavaScript 中,在 Internet Explorer 8 中,我在 xDataSpc 中有以下 XML:

<?xml version="1.0"?>
<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="1163">
            <z:row SpcID="1.00000000000000" ows_SpaceNum="206-1"/>
            <z:row SpcID="3.00000000000000" ows_SpaceNum="206-11"/>
            <z:row SpcID="4.00000000000000" ows_SpaceNum="206-2"/>
            <z:row SpcID="5.00000000000000" ows_SpaceNum="206-3"/>
            <z:row SpcID="184.000000000000" ows_SpaceNum="2037"/>
            <z:row SpcID="185.000000000000" ows_SpaceNum="2038"/>
            . . .

我有一个数字,我想为它找到行。# 是一个空间 ID,作为一个整数。

所以,如果我有一个“3”,我想获得第二行。

我已经尝试了所有这些:

xDataSpc.responseXML.selectSingleNode("//rs:data/z:row[@SpcID='3.00000000000000']") 
xDataSpc.responseXML.selectSingleNode("//rs:data/z:row[starts-with( @SpcID,  '3.']")
xDataSpc.responseXML.selectSingleNode("//rs:data/z:row[starts-with('@SpcID', '3.']")
xDataSpc.responseXML.selectSingleNode("//rs:data/z:row[@SpcID^='3.']")

和更多。我根本找不到一种方法来指定SpcID. 第一个条目的开始字符,指定整个属性值函数,它返回我之后的行。

其他一切都给了我“未知功能”。</p>

4

2 回答 2

1

您的第二次尝试中缺少一个括号:

xDataSpc.responseXML.selectSingleNode("//rs:data/z:row[starts-with( @SpcID,  '3.']")

应该:

xDataSpc.responseXML.selectSingleNode("//rs:data/z:row[starts-with( @SpcID,  '3.')]")
于 2015-12-03T12:35:45.953 回答
0

利用

var doc = xDataSpc.responseXML;
doc.setProperty('SelectionLanguage', 'XPath');

那么你可以doc.selectSingleNode("//rs:data/z:row[starts-with( @SpcID, '3.']")毫无问题地使用你的。MSXML 3 的默认选择语言不是 W3C 定义的 XPath 1.0 标准,而是目前只有 Microsoft 支持的旧草案。

于 2013-09-13T16:46:25.177 回答