我有一段有问题的代码,这是一件非常特别的事情,而且我之前从未经历过任何事情!
我正在调用Sharepoint SOAP函数,并且返回结果非常正确。许多XML数据记录正在被重新编写。
现在我尝试将结果转换为XmlDocument,然后将其用于加载到DataSet中。
然而,当它被插入到DataSet中时,它只插入1条记录,这恰好是Xml的第一条记录。
有问题的代码如下:
Lists list = new Lists();
list.Url = URL + "_vti_bin/Lists.asmx";
list.UseDefaultCredentials = true;
//Gets the entire Lists attached to the Sharepoint Site
XmlNode Results = list.GetListCollection();
//Writes the entire results into an XmlDocument.
doc.AppendChild(doc.ImportNode(Results, true));
using (StringReader xmlSR = new StringReader(doc.InnerXml))
{
ds.ReadXml(xmlSR, XmlReadMode.Auto);
}
来自' doc.InnerXml的Xml'是完全有效的,可以进入Xml Notepad 2007,所以我有点迷失。
我希望有人可以对此有所了解,非常感谢
答案 0 :(得分:0)
以下示例适用于我:
Lists list = new Lists(); //SharePoint Lists SOAP service
//Perform request
XmlNode result = list.GetListCollection();
//Process result
var ds = new DataSet("ListsResults");
using (var reader = new StringReader(result.OuterXml))
{
ds.ReadXml(reader, XmlReadMode.Auto);
}
//print List Titles
foreach (DataRow row in ds.Tables[0].Rows)
{
Console.WriteLine(row["Title"]);
}
另一种常见方法是使用LINQ to XML
:
Lists list = new Lists(); //SharePoint Lists SOAP service
//Perform request
XmlNode result = list.GetListCollection();
var docResult = XDocument.Parse(result.OuterXml);
XNamespace s = "http://schemas.microsoft.com/sharepoint/soap/";
var listEntries = from le in docResult.Descendants(s + "List")
select new
{
Title = le.Attribute("Title").Value
};
foreach (var e in listEntries)
{
Console.WriteLine(e.Title);
}