如何在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!
答案 0 :(得分:2)
要在两个不同的sharepoint实例之间进行集成,您必须使用sharepoint Web服务。
在您的项目中,创建对以下网址的网络引用:http://sharepointserver/_vti_bin/lists.asmx
创建与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);
现在您收到了收藏。只需遍历从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。