首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取特定行的CAML查询

获取特定行的CAML查询
EN

Stack Overflow用户
提问于 2018-03-01 19:22:13
回答 1查看 591关注 0票数 0

我正在使用Excel VBA通过SOAP请求获取SharePoint列表。

我可以获取所有记录。

如何获取具有特定Roll Number的名称?

下面是Excel VBA代码片段。

代码语言:javascript
复制
Public Function retrieveSharepoint()
Dim currentId As String, ACP As String, DL As String
Dim returnedRow As Object
Dim setNode As Object
Dim sURL As String
    Dim sEnv As String
    Dim xmlhtp As New MSXML2.XMLHTTP60
    Dim xmlDoc As New DOMDocument60
    sURL = "https://sites.com/sites/project/project_ext/_vti_bin/lists.asmx"
    sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
    sEnv = sEnv & "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://schemas.xmlsoap.org/soap/envelope/"">"
    sEnv = sEnv & "  <soap12:Body>"
    sEnv = sEnv & "    <GetListItems xmlns=""http://schemas.microsoft.com/sharepoint/soap/"">"
    sEnv = sEnv & "         <listName>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx}</listName>"
    sEnv = sEnv & "    </GetListItems>"
    sEnv = sEnv & "  </soap12:Body>"
    sEnv = sEnv & "</soap12:Envelope>"

    With xmlhtp
        .Open "post", sURL, False
        .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
        .setRequestHeader "soapAction", "http://schemas.microsoft.com/sharepoint/soap/GetListItems"
        .send sEnv
        xmlDoc.LoadXML (.responseText)
        For Each returnedRow In .responseXML.getElementsByTagName("z:row")
            currentId = returnedRow.getAttribute("ows_Roll_x0020_Number")
            ACP = returnedRow.getAttribute("ows_Name")
            DL = returnedRow.getAttribute("ows_Last_x0020_Name")
        Next
        MsgBox .responseText
    End With

End Function

目前,我可以获取所有记录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 19:59:25

只需使用Query元素:

/edit

好的,我已经和Postman核对过了,正确的SOAP XML是例如:

代码语言:javascript
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soapenv:Body>
        <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
            <listName>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx}</listName>
            <query>
                <Query>
                    <Where>
                        <Eq>
                            <FieldRef Name='ID' />
                            <Value Type='Number'>260</Value>
                        </Eq>
                    </Where>
                </Query>
            </query>
        </GetListItems>
    </soapenv:Body>
</soapenv:Envelope>

因此,您的代码应该如下所示:

代码语言:javascript
复制
sEnv = sEnv & "         <listName>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx}</listName>"
sEnv = sEnv & "         <query><Query><Where><Eq><FieldRef Name='Roll_x0020_Number' /><Value Type='Number'>#YOUR NUMBER#</Value></Eq></Where></Query></query>"

其他参考资料:Lists.GetListItems

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49048626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档