Sharepoint列表项查询

时间:2014-02-17 07:53:09

标签: c# asp.net .net sharepoint soap

如何在c#中使用soap查询sharepoint列表项? 应查询数据的代码将放在一个主机上(sharepoint 2007,.net 2.0)。列表位于另一台主机上(Sharepoint 2010)。 据我所知,我不能用于此目的SPSite,SPWeb ..

using(SPSite site = new SPSite("http://hostname/...")) {
  using(SPWeb web = site.OpenWeb()) {
     ...

有人能举例说明如何做到这一点吗? TNX!

2 个答案:

答案 0 :(得分:2)

要在两个不同的sharepoint实例之间进行集成,您必须使用sharepoint Web服务。

  1. 在您的项目中,创建对以下网址的网络引用:http://sharepointserver/_vti_bin/lists.asmx

  2. 创建与Web服务的连接:

    var client = new SharePointWebServices.Lists { Credentials = new NetworkCredential("username", "password") };
    var xmlDoc = new XmlDocument();
    var viewFields = xmlDoc.CreateElement("ViewFields");
    viewFields.InnerXml = "<FieldRef Name=\"ows_FIELD YOU WISH TO RETRIEVE\" />";
    var listGuid = ConfigurationManager.AppSettings["GUID_OF_LIST"];
    XmlNode listItems = client.GetListItems(listGuid, null, null, viewFields,
                                                    null, null, null);
    
  3. 现在您收到了收藏。只需遍历从webservice检索到的xmlDoc。我是这样做的:

    foreach (XmlNode node in listItems)
    {
       if (node.Name == "rs:data")
       {
          for (int f = 0; f < node.ChildNodes.Count; f++)
          {
             if (node.ChildNodes[f].Name == "z:row")
             {
                var xmlAttributeCollection = node.ChildNodes[f].Attributes;
                if (xmlAttributeCollection != null)
                {
                    string listItem = xmlAttributeCollection["ows_ows_FIELD YOU WISH TO RETRIEVE"].Value;
                }
             }
          }
       }
    }
    

答案 1 :(得分:0)

您可以使用SharePoint soap web services。或者,如果要从SharePoint 2010获取数据,则可以使用 它的rest api