XmlDocument到DataSet只返回1行

时间:2014-11-19 12:20:39

标签: c# xml sharepoint-2010 dataset xmldocument

我有一段有问题的代码,这是一件非常特别的事情,而且我之前从未经历过任何事情!

我正在调用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,所以我有点迷失。

我希望有人可以对此有所了解,非常感谢

1 个答案:

答案 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);
}