如何在C#中的Sharepoint文档库的文件夹中获取文件名?

时间:2014-08-26 09:12:47

标签: c# .net xml sharepoint xml-parsing

我的sharepoint服务器上有一个文档库 - “Artifacts”。在图书馆里面,我有一些文件夹。我想获取驻留在文件夹中的所有文件的名称。我正在使用Lists.asmx webservice获取此信息。但我只能获取文件夹的名称,但不能获取每个文件夹中文件的名称。以下是获取文件夹名称的代码。如果有更好的方法来获取文件名而不是Lists.asmx,那么请使用一些示例代码建议。否则,请告诉我如何使用Lists.asmx webservice获取文件夹中的文件名。

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;
    }

1 个答案:

答案 0 :(得分:1)

尝试使用以下代码获取基于文件夹

的项目
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);
    }
  }
}