In the .NET Framework, the DataSet’s WriteXml method when used to create a DiffGram does not provide the capability to include schema information along with the data. This is more of a design choice than an objective difficulty, though. When you return a DataSet object from a Web service method your clients receive a special flavor of DiffGram object made of schema and data. The output is shown here:
... ...
Technically speaking, the Web service serialization of a DataSet object is not obtained through WriteXml and the final output is not a true DiffGram, but rather a new XML format that incorporates a DiffGram. Such a new format is not produced by WriteXml but comes care of the XML serializer–the XmlSerializer class. The following code shows how to serialize a DataSet object to obtain a DiffGram with schema.
Dim sw As StreamWriter = New StreamWriter(fileName)Dim writer As XmlTextWriter = New XmlTextWriter(sw)writer.Formatting = Formatting.IndentedDim ds As DataSet = InitializeTheDataSet()Dim ser As XmlSerializer = New XmlSerializer(GetType(DataSet))ser.Serialize(writer, ds)
It should be clear by now that you need the XML deserializer to read this new breed of DiffGram. The code is the following:
Dim ser As XmlSerializer = New XmlSerializer(GetType(DataSet))Dim ds As DataSet = CType(ser.Deserialize(writer, ds), DataSet)
Source: Applied XML Programming for Microsoft .NET, Dino Esposito, Microsoft Press 2002