Конечно, это не самый красивый способ делать что-то, но это просто вопрос получения правильных примеров.
Я использовал следующий код, чтобы получить "материал" из запроса на получение списков.
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);
}
Вызывая это с помощью
XmlNode items = lists.GetListItems(listName, string.Empty, listQuery, listViewFields, string.Empty, listQueryOptions, g.ToString());
foreach (XmlNode listItem in SPCollection.XpathQuery(items, "//sp:listitems/rs:data/z:row"))
{
XmlAttribute id = listItem.Attributes["ows_Id"];
if (id != null)
{
pageId = id.Value;
}
}
Пример не дает многого, но, надеюсь, он дает вам представление о том, как получить данные. Да, мне очень не нравится проблема с XPathQueries в целом с пространством имен, но что вы собираетесь делать?
Я просто не очень заинтересован в переписывании веб-сервисов SharePoint, тем более что тестирование и выпуск в нашей среде само по себе стоит нескольких недель. Но иногда иного выхода нет. Например. если вы хотите получить доступ к настраиваемому пакету свойств SPWeb или создать SiteCollection с использованием определенного шаблона сайта и базы данных контента (или любого другого миллиона вещей, которые не реализованы в веб-службах). Однако для простого доступа к списку веб-службы кажутся прекрасными.
person
Nat
schedule
23.04.2009