VB.Net/XML/XML DataSet
Load xml document to DataSet
Imports System
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Collections
Imports System.Data
Imports System.Windows.Forms
Public Class MainClass
Shared Sub Main()
Dim DSStudentClasses As New DataSet()
Dim tmpNode As XmlNode
" Load the schema into the DataSet
DSStudentClasses.ReadXmlSchema("StudentClasses.xsd")
" Load the DataSet into the data document
Dim XDocStudents As New XmlDataDocument(DSStudentClasses)
" Load the data into the data document
XDocStudents.Load("Students.xml")
Console.WriteLine("Students in DataSet:")
Dim Row As DataRow
For Each Row In DSStudentClasses.Tables("Student").Rows
Console.WriteLine("{0}:{1}", Row("Name"), Row("GPA"))
tmpNode = XDocStudents.GetElementFromRow(Row)
Console.WriteLine( _
" Locker Combination (from XML, not DataSet): {0}", _
tmpNode.SelectSingleNode("LockerCombination").InnerText)
Dim Subject As DataRow
For Each Subject In Row.GetChildRows("StudentClasses")
Console.WriteLine(" {0}", Subject("Title"))
Next
Next
End Sub
End Class
"student.xml
"<?xml version="1.0" encoding="utf-8" ?>
"<Students>
" <Student ID="1">
" <Name>Joe Wang</Name>
" <Age>30</Age>
" <GPA>2.95</GPA>
" <LockerCombination>10-12-35</LockerCombination>
" <Class Title="Biology" Room="100" />
" <Class Title="English Lit" Room="101" />
" </Student>
"</Students>
"student.xsd
"<?xml version="1.0" standalone="yes"?>
"<xs:schema id="Students" xmlns=""
" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
" <xs:element name="Students" msdata:IsDataSet="true">
" <xs:complexType>
" <xs:choice maxOccurs="unbounded">
" <xs:element name="Student">
" <xs:complexType>
" <xs:sequence>
" <xs:element name="Name" type="xs:string"
" minOccurs="0" msdata:Ordinal="0" />
" <xs:element name="GPA" type="xs:float"
" minOccurs="0" msdata:Ordinal="2" />
" <xs:element name="Class"
" minOccurs="0" maxOccurs="unbounded">
" <xs:complexType>
" <xs:attribute name="Title" type="xs:string" />
" <xs:attribute name="Room" type="xs:string" />
" <xs:attribute name="StudentID" type="xs:int"
" use="prohibited" />
" </xs:complexType>
" </xs:element>
" </xs:sequence>
" <xs:attribute name="ID" type="xs:int" />
" </xs:complexType>
" </xs:element>
" </xs:choice>
" </xs:complexType>
" <xs:unique name="StudentID" msdata:PrimaryKey="true">
" <xs:selector xpath=".//Student" />
" <xs:field xpath="@ID" />
" </xs:unique>
" <xs:keyref name="StudentClasses" refer="StudentID"
" msdata:IsNested="true">
" <xs:selector xpath=".//Class" />
" <xs:field xpath="@StudentID" />
" </xs:keyref>
" </xs:element>
"</xs:schema>
Read XML schema with DataSet and output its structure
Imports System
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
Imports System.Collections
Imports System.Data
Public Class MainClass
Shared Sub Main()
Dim MyDS As New DataSet()
MyDS.ReadXmlSchema("book.xdr")
Console.WriteLine("Book Structure:")
Dim Table As DataTable
For Each Table In MyDS.Tables
Console.WriteLine("Table {0}", Table.TableName)
Dim Column As DataColumn
For Each Column In Table.Columns
Console.WriteLine(" {0}", Column.ColumnName)
Next
Next
End Sub
End Class
"book.xdr
"<?xml version = "1.0"?>
"<Schema xmlns = "urn:schemas-microsoft-com:xml-data">
" <ElementType name = "title" content = "textOnly"
" model = "closed" />
" <ElementType name = "book" content = "eltOnly" model = "closed">
" <element type = "title" minOccurs = "1" maxOccurs = "1" />
" </ElementType>
" <ElementType name = "books" content = "eltOnly" model = "closed">
" <element type = "book" minOccurs = "0" maxOccurs = "*" />
" </ElementType>
"</Schema>
Update and insert XML Element with DataSet
Imports System
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
Imports System.Collections
Imports System.Data
Public Class MainClass
Shared Sub Main()
Dim MyDS As New DataSet()
MyDS.ReadXmlSchema("book.xdr")
MyDS.ReadXml("book.xml")
MyDS.AcceptChanges()
Dim NewBook As DataRow = MyDS.Tables("Book").NewRow()
NewBook("Title") = "This ADO.NET Book"
MyDS.Tables("Book").Rows.Add(NewBook)
MyDS.WriteXml("Books_Changes.xml", XmlWriteMode.DiffGram)
MyDS.AcceptChanges()
MyDS.WriteXml("Books_New.xml", XmlWriteMode.IgnoreSchema)
End Sub
End Class
"book.xdr
"<?xml version = "1.0"?>
"<Schema xmlns = "urn:schemas-microsoft-com:xml-data">
" <ElementType name = "title" content = "textOnly"
" model = "closed" />
" <ElementType name = "book" content = "eltOnly" model = "closed">
" <element type = "title" minOccurs = "1" maxOccurs = "1" />
" </ElementType>
" <ElementType name = "books" content = "eltOnly" model = "closed">
" <element type = "book" minOccurs = "0" maxOccurs = "*" />
" </ElementType>
"</Schema>