当然,这不是最漂亮的做事方式,但它只是获取正确示例的问题。
我使用以下代码从获取列表查询中获取“东西”。
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 Web 服务不感兴趣,尤其是在我们的环境中进行测试和发布本身就需要数周的努力。但有时,别无选择。例如。如果您想访问 SPWeb 的自定义属性包或使用特定的站点模板和内容数据库(或任何其他未在 Web 服务中实现的数百万事物)创建 SiteCollection。但是,对于简单的列表访问,网络服务似乎很好。