Веб-службы SharePoint: проверьте, существует ли файл - PullRequest
2 голосов
/ 25 февраля 2009

Я использую веб-сервисы SharePoint в C #. Мой код работает для проверки файлов и проверки их с помощью веб-службы списков. Мне нужно проверить, существует ли файл; Я могу найти множество примеров для этого, используя API объектной модели, но я не могу найти простой способ сделать это с помощью веб-сервисов.

Ответы [ 3 ]

3 голосов
/ 25 февраля 2009

Попробуйте Lists.GetListItems с подходящим запросом CAML.

CAML-запрос типа

<Query><Where><Eq><FieldRef Name="FileLeafRef" /><Value Type="Text">Filename.rtf</Value></Eq></Where></Query>

должно работать; в поле FileLeafRef хранится имя файла.

0 голосов
/ 28 декабря 2009

У меня тоже были похожие проблемы с этим. Я безуспешно пробовал следующие FieldRefs: «Имя», «FileLeafRef» и «LinkFilenameNoMenu».

Сообщение, расположенное по адресу http://www.johanolivier.blogspot.com, подробно описывает, что мне нужно было сделать, чтобы оно заработало.

0 голосов
/ 27 февраля 2009

Этот код может подойти, он немного грубоват, но демонстрирует, как получить список файлов на основе заголовка.

        public static bool PageExists(string listName, string webPath, string pageTitle)
        {
            string pageId = "";
            IntranetLists.Lists lists = new IntranetLists.Lists();
            lists.UseDefaultCredentials = true;
            lists.Url = webPath + "/_vti_bin/lists.asmx";
            XmlDocument doc = new XmlDocument();
            doc.LoadXml("<Document><Query><Where><Contains><FieldRef Name=\"Title\" /><Value Type=\"Text\">" + pageTitle + "</Value></Contains></Where></Query><ViewFields /><QueryOptions /></Document>");
            XmlNode listQuery = doc.SelectSingleNode("//Query");
            XmlNode listViewFields = doc.SelectSingleNode("//ViewFields");
            XmlNode listQueryOptions = doc.SelectSingleNode("//QueryOptions");

            Guid g = GetWebID(webPath);

            XmlNode items = lists.GetListItems(listName, string.Empty, listQuery, listViewFields, string.Empty, listQueryOptions, g.ToString());

            }
            return items.Count > 0;            
        }

        public static XmlNodeList XpathQuery(XmlNode xmlToQuery, string xPathQuery)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlToQuery.OuterXml);
            XmlNamespaceManager mg = new XmlNamespaceManager(doc.NameTable);
            mg.AddNamespace("sp", "http://schemas.microsoft.com/sharepoint/soap/");
            mg.AddNamespace("z", "#RowsetSchema");                                   
            mg.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
            mg.AddNamespace("y", "http://schemas.microsoft.com/sharepoint/soap/ois");
            mg.AddNamespace("w", "http://schemas.microsoft.com/WebPart/v2");
            mg.AddNamespace("d", "http://schemas.microsoft.com/sharepoint/soap/directory");
            return doc.SelectNodes(xPathQuery, mg);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...