我正在尝试使用其网络服务列出SharePoint 2010中文件夹的内容。
这就是我到目前为止所告诉我的,如果我过度复杂,请告诉我。
XNamespace z = "#RowsetSchema";
string lId = this.GetListID("Account");
string vId = this.GetViewID("All Documents", lId);
//this below, works, I'm getting the unique ID of folder...
string folderId = this.GetListData(lId, vId).Descendants(z + "row").
Where(x => x.Attribute("ows_LinkFilename").Value.Equals("FolderName")).
Select(x => x.Attribute("ows_UniqueId").Value).SingleOrDefault().ToString();
private string GetListID(string listName)
{
string listID;
try
{
XDocument doc = XDocument.Parse(_listClient.GetListCollection().ToString());
listID = (from x in doc.Elements().First().Elements()
where x.Attribute("Title").Value.Equals(listName)
select x.Attribute("ID").Value).FirstOrDefault();
}
catch
{
throw;
}
return listID;
}
private string GetViewID(string viewName, string listID)
{
string viewID = null;
try
{
XDocument doc = XDocument.Parse(_viewClient.GetViewCollection(listID).ToString());
viewID = (from x in doc.Elements().First().Elements()
where x.Attribute("DisplayName").Value.Equals(viewName)
select x.Attribute("Name").Value).FirstOrDefault();
}
catch
{
throw;
}
return viewID;
}
private XDocument GetListData(string listID, string viewID)
{
XDocument list_data = null;
try
{
list_data = XDocument.Parse(_listClient.GetListItems(listID, viewID, null, null, "10000", null, null).ToString());
var q = (from x in list_data.Elements().First().Elements().First().Elements()
select new
{
Title = x.Attribute("ows_LinkTitle").Value,
Field1 = x.Attribute("ows_Field1").Value,
Field2 = x.Attribute("ows_Field2").Value
});
}
catch
{
throw;
}
return list_data;
}
如您所见,我可以获取相关文件夹的唯一ID。但那又怎样?是否有任何其他SharePoint Web服务需要与文件夹ID一起使用才能获取其内容?
以下是我正在尝试获取以下内容的URL结构示例:
https://spsite.domain.ca/testenv/account/000001
上面的代码检索了文件夹000001
的唯一ID,但后来我卡在那里......我在GetFolderItems
中看不到任何lists.asmx
或类似内容或其他SP网络服务。
我看到了一些例子,但他们使用汇编Microsoft.Sharepoint.dll
这样做,我正试图避免。
谢谢!