A Quick Wilson.XmlDbClient Sample

Dennis was pointing out that the documentation file that I threw together for WilsonXmlDbClient didn't include any sample code to give beginners a little head start. I had intended to do more work on the documentation but lost track of it.

For those who don't know, WilsonXmlDbClient  is an excellent open source ADO.NET XML Provider by Paul Wilson that lets you treat XML like SQL data.

Anyway, here's some quick Windows Forms/VB/C# code and a sample XML file in case anyone needs it. The sample XML data file is shown afterwards. Just throw a datagrid on the form and hook it up!

For more info, be sure to check out Paul Wilson's blog.

    Private Sub Form1_Load _
    (ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles MyBase.Load
        Dim xmldbconn As New Wilson.XmlDbClient.XmlDbConnection
        Dim strBasePath = Environment.CurrentDirectory & "\..\"
        xmldbconn.ConnectionString = strBasePath & _
        "Average_tuition_fees_by_faculty.xml"
        Dim xmldbcmd As New Wilson.XmlDbClient.XmlDbCommand
        xmldbcmd.Connection = xmldbconn
        xmldbcmd.CommandText = "SELECT Name, Fee2003_04, " & _
        "Fee2004_05 from Faculty Where Fee2004_05 > 4000 ORDER BY Fee2004_05"
        Dim xmldbda As Wilson.XmlDbClient.XmlDbDataAdapter
        xmldbda = New Wilson.XmlDbClient.XmlDbDataAdapter(xmldbcmd)
        Dim ds As New DataSet
        xmldbda.Fill(ds)
        DataGrid1.DataSource = ds.Tables(0)
    End Sub

  private void Form1_Load(object sender, System.EventArgs e)
  {
   Wilson.XmlDbClient.XmlDbConnection xmldbconn = new Wilson.XmlDbClient.XmlDbConnection();
   string strPath = Environment.CurrentDirectory + @"\..\..\";
   xmldbconn.ConnectionString = strPath + "Average_tuition_fees_by_faculty.xml";
   Wilson.XmlDbClient.XmlDbCommand xmldbcmd = new Wilson.XmlDbClient.XmlDbCommand();
   xmldbcmd.Connection = xmldbconn;
   xmldbcmd.CommandText = "SELECT Name, Fee2003_04, Fee2004_05 from Faculty Where Fee2004_05 > 4000 ORDER BY Fee2004_05";
   Wilson.XmlDbClient.XmlDbDataAdapter da = new Wilson.XmlDbClient.XmlDbDataAdapter(xmldbcmd);
   DataSet ds = new DataSet();
   da.Fill(ds);
   dataGrid1.DataSource = ds.Tables[0];
  }

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Tuitions desc="Average tuition fees by faculty">
 <xs:schema id="data" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="data" msdata:IsDataSet="true">
   <xs:complexType>
    <xs:choice maxOccurs="unbounded">
     <xs:element name="Faculty">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="id" msdata:AutoIncrement="true" type="xs:decimal" minOccurs="0" />
        <xs:element name="Name" type="xs:string" minOccurs="0" />
        <xs:element name="Fee2003_04" type="xs:double" minOccurs="0" />
        <xs:element name="Fee2004_05" type="xs:double" minOccurs="0" />
       </xs:sequence>
      </xs:complexType>
     </xs:element>
    </xs:choice>
   </xs:complexType>
  </xs:element>
 </xs:schema>
 <Faculty>
  <Name>Agriculture</Name>
  <Fee2003_04>3495</Fee2003_04>
  <Fee2004_05>3626</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Architecture</Name>
  <Fee2003_04>3587</Fee2003_04>
  <Fee2004_05>3610</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Arts</Name>
  <Fee2003_04>3813</Fee2003_04>
  <Fee2004_05>3935</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Commerce</Name>
  <Fee2003_04>3985</Fee2003_04>
  <Fee2004_05>4118</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Dentistry</Name>
  <Fee2003_04>11681</Fee2003_04>
  <Fee2004_05>12331</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Education</Name>
  <Fee2003_04>3149</Fee2003_04>
  <Fee2004_05>3240</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Engineering</Name>
  <Fee2003_04>4400</Fee2003_04>
  <Fee2004_05>4617</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Household sciences</Name>
  <Fee2003_04>3669</Fee2003_04>
  <Fee2004_05>3878</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Law</Name>
  <Fee2003_04>5995</Fee2003_04>
  <Fee2004_05>6471</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Medicine</Name>
  <Fee2003_04>9137</Fee2003_04>
  <Fee2004_05>9977</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Music</Name>
  <Fee2003_04>3759</Fee2003_04>
  <Fee2004_05>3883</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Science</Name>
  <Fee2003_04>3957</Fee2003_04>
  <Fee2004_05>4094</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Undergraduate</Name>
  <Fee2003_04>4018</Fee2003_04>
  <Fee2004_05>4172</Fee2004_05>
 </Faculty>
 <Faculty>
  <Name>Graduate</Name>
  <Fee2003_04>5247</Fee2003_04>
  <Fee2004_05>5475</Fee2004_05>
 </Faculty>
</Tuitions>

Ken

Microsoft MVP [ASP.NET]

Published 04 October 2005 04:01 PM by Ken Cox [MVP]

Comments

# Marcus Sonntag said on 14 October, 2005 01:19 PM
Hi,

can you give me an example of how to use the Delete, Update and Insert Commands ?

Thank you,

Marcus
# Mohamed Koker said on 23 February, 2008 12:14 AM

Hi Ken,

Have you any idea where I can obtain a copy of the wilson.XmlDBClient?

Thanks in advance

-Mohamed

# Ken Cox [MVP] said on 23 February, 2008 01:08 AM

Look for the old GotDotNet source code here:

code.msdn.microsoft.com/WilsonXmlDbClient

# Mohamed Koker said on 24 February, 2008 04:56 AM

Much obliged!

I was wondering whether it is possible to create a connection using this provider at design-time in the IDE?

I would love to add this capability if it is not already there but need some pointers as to what I need to do to get the IDE to support this.

# Querying XML Files | keyongtech said on 21 January, 2009 10:49 PM

Pingback from  Querying XML Files | keyongtech

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Search

Go

This Blog

Web Links

Syndication