4

This is my first post here, but used this site a lot :)

My question is how I can convert an XmlNode, obtained through the Lists.asmx SharePoint web service, to a DataSet / DataTable. The reason I want a DataTable with the events is because we have a lot of extension methods helping extracting values and such in an allready implemented class.

I am asking the service for events from a calendar. This is how I use the service:

/* Instantiate an XmlDocument object */ var xmlDoc = new System.Xml.XmlDocument(); XmlElement viewFields = xmlDoc.CreateElement("ViewFields"); XmlElement query = xmlDoc.CreateElement("Query"); XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions"); query.InnerXml = "<Where>" + "<And>" + string.Format("<Geq><FieldRef Name=\"EndDate\" /><Value Type=\"DateTime\" IncludeTimeValue=\"TRUE\">{0}</Value></Geq>", SPUtility.CreateISO8601DateTimeFromSystemDateTime(from)) + string.Format("<Leq><FieldRef Name=\"EventDate\" /><Value Type=\"DateTime\" IncludeTimeValue=\"TRUE\">{0}</Value></Leq>", SPUtility.CreateISO8601DateTimeFromSystemDateTime(to)) + "</And>" + "</Where>"; queryOptions.InnerXml = ""; viewFields.InnerXml = GetViewFields(); nodeListItems = serviceClient.GetListItems (listName, viewName, query, viewFields, rowLimit, queryOptions, null); 

I searched the great webz and found this thread which is exactly what I want to achieve. In the thread a guy posted this method and people rejoiced, saying it solved it:

public static DataSet ConverttYourXmlNodeToDataSet(XmlNode xmlnodeinput) { //declaring data set object DataSet dataset = null; if (xmlnodeinput!= null) { XmlTextReader xtr = new XmlTextReader(xmlnodeinput.OuterXml, XmlNodeType.Element, null); dataset = new DataSet(); dataset.ReadXml(xtr); } return dataset; } 

But for me it does not seem to do the trick. The XmlTextReader just says "None" when I debug it. I also tried using XmlNodeReader instead of XmlTextReader. When I check what the OuterXml in the node is, it looks like this:

<listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns="http://schemas.microsoft.com/sharepoint/soap/"> <rs:data ItemCount="4"> <z:row .. Attributes /> <z:row .. Attributes /> <z:row .. Attributes /> <z:row .. Attributes /> </rs:data> </listitems> 

The rows are the 4 events I wanted to get, with lots of attributes on them. I guess it looks like it should markup-wise?

Can anyone help me out? :)

    1 Answer 1

    2

    Doing this will load xml data into Datset.

     XmlNode nodeListItems = objlist.GetListItems(_ListName, null, null, null, null, null, null); xmlDoc.LoadXml(nodeListItems.OuterXml); XmlNodeReader xmlReader = new XmlNodeReader(xmlDoc); ds.ReadXml(xmlReader); 

      Start asking to get answers

      Find the answer to your question by asking.

      Ask question

      Explore related questions

      See similar questions with these tags.