如何在C#中获取Sharepoint文档库文件夹中的文件名?
我的sharepoint服务器上有一个文档库——“工件”。在图书馆里,我有一些文件夹。我想获取驻留在文件夹中的所有文件的名称。我正在使用Lists.asmx webservice获取此信息。但是我只能得到文件夹的名称,而不能得到每个文件夹中文件的名称。下面是获取文件夹名称的代码。如果有更好的方法来获取文件名而不是Lists.asmx,请使用一些示例代码进行建议。否则,请让我知道如何使用Lists.asmx webservice获取文件夹中的文件名如何在C#中获取Sharepoint文档库文件夹中的文件名?,c#,.net,xml,sharepoint,xml-parsing,C#,.net,Xml,Sharepoint,Xml Parsing,我的sharepoint服务器上有一个文档库——“工件”。在图书馆里,我有一些文件夹。我想获取驻留在文件夹中的所有文件的名称。我正在使用Lists.asmx webservice获取此信息。但是我只能得到文件夹的名称,而不能得到每个文件夹中文件的名称。下面是获取文件夹名称的代码。如果有更好的方法来获取文件名而不是Lists.asmx,请使用一些示例代码进行建议。否则,请让我知道如何使用Lists.asmx webservice获取文件夹中的文件名 public Collection<str
public Collection<string> GetFileNamesFromList(string sitePath, string folderName)
{
Collection<string> artifactsList = new Collection<string>();
string innerhtml = string.Empty;
string listServiceURL = string.Format("{0}{1}", sitePath, this.spserviceInfo.ListserviceUri);
Lists listWS = new Lists(listServiceURL);
listWS.UseDefaultCredentials = true;
listWS.Url = listServiceURL;
XmlDocument xmlDoc = new XmlDocument();
XmlNode artifactQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
XmlNode artifactViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
XmlNode artifactQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");
artifactQueryOptions.InnerXml = "<IncludeAttachmentUrls>TRUE</IncludeAttachmentUrls>";
artifactViewFields.InnerXml = "";
artifactQuery.InnerXml = "";
XmlNode ndListItems = listWS.GetListItems("Artifacts", null, artifactQuery, artifactViewFields, null, artifactQueryOptions, null);
XmlNodeList oNodes = ndListItems.ChildNodes;
foreach (XmlNode node in oNodes)
{
XmlNodeReader objReader = new XmlNodeReader(node);
while (objReader.Read())
{
if (objReader["ows_LinkFilename"] != null)
{
var folder = objReader["ows_LinkFilename"].ToString();
artifactsList.Add(folder);
}
}
}
return artifactsList;
}
公共集合GetFileNamesFromList(字符串sitePath、字符串folderName)
{
集合工件列表=新集合();
string innerhtml=string.Empty;
string listServiceURL=string.Format(“{0}{1}”,sitePath,this.spserviceInfo.ListserviceUri);
Lists listWS=新列表(listServiceURL);
listWS.UseDefaultCredentials=true;
Url=listServiceURL;
XmlDocument xmlDoc=新的XmlDocument();
XmlNode artifactQuery=xmlDoc.CreateNode(XmlNodeType.Element,“Query”,“”);
XmlNode artifactViewFields=xmlDoc.CreateNode(XmlNodeType.Element,“ViewFields”和“”);
XmlNode-artifactQueryOptions=xmlDoc.CreateNode(XmlNodeType.Element,“QueryOptions”和“”);
artifactQueryOptions.InnerXml=“TRUE”;
artifactViewFields.InnerXml=“”;
artifactQuery.InnerXml=“”;
XmlNode ndListItems=listWS.GetListItems(“工件”,null,artifactQuery,artifactViewFields,null,artifactQueryOptions,null);
XmlNodeList oNodes=ndListItems.ChildNodes;
foreach(oNodes中的XmlNode节点)
{
XmlNodeReader objReader=新的XmlNodeReader(节点);
while(objReader.Read())
{
if(objReader[“ows\u LinkFilename”]!=null)
{
var folder=objReader[“ows_LinkFilename”].ToString();
artifactsList.Add(文件夹);
}
}
}
返回工件列表;
}
尝试以下代码以获取基于文件夹的项目
using(SPSite site = new SPSite("site url"))
{
using(SPWeb web = site.OpenWeb())
{
SPFolder folder = web.GetFolder("/Docs/folder1");
if(folder.ItemCount > 0)
{
SPList list = web.Lists.TryGetList("ListName");
SPQuery query = new SPQuery();
query.Folder = folder;
SPListItemCollection = list.GetItems(query);
}
}
}
这需要Microsoft.Sharepoint dll,该dll仅在Sharepoint Server中可用。我的开发机器是Windows8,我无法使用它。