.Net, ASP.Net, C#, VB.net, SQL Server, Xml, CSS, Design Patterns related tips, tricks, code snippets, articles, links, thoughts, etc. from Binu & Subi Thayamkery.

Binu Thayamkery is a seasoned software architect with more than 13 years of experience in developing enterprise grade connected systems using Microsoft Technologies. In his current position as a lead consultant-solution architect with Prudential Financial, he is working on architecture of next generation investment reporting framework using .net 3.5/WCF/AJAX, etc. He holds a Masters Degree in Computer Science from Colorado State University. Subi Thayamkery is an experienced software developer with more than 8 years of developing various application software systems ranging from workflow automation systems to compliance management tools. She currently works as a technology consultant for Prudential Financial where she helps develop a new system for corportate governance department. She holds an Electrical Engineering degree from New Jersey Institute of Technology.

Friday, April 25, 2008

Creating Schema from Xml file

Here is a code snippet that creates a simple schema file from an
Xml file. It uses XmlSchemaInference class (available from .net 2.0+)
to inferschema from an xml file.


        XmlReader reader = XmlReader.Create(@"c:\binu\customer.xml");

        
XmlSchemaSet schemaSet = new XmlSchemaSet();

        
XmlSchemaInference schema = new XmlSchemaInference();



        schemaSet = schema.InferSchema(reader);

        
TextWriter writer = new StreamWriter(@"c:\binu\customer.xsd");

        
foreach (XmlSchema s in schemaSet.Schemas())

        {

            s.Write(writer);

        }




Sample Xml file used:


<Customers>

<
Customer CustomerName="Maria Anders" Country="Germany"/>

<
Customer CustomerName="Ana Trujillo" Country="Russia"/>

<
Customer CustomerName="Antonio Moreno" Country="Spain"/>

<
Customer CustomerName="Thomas Hardy" Country="United Kingdom"/>

<
Customer CustomerName="Maria Anders" Country="Holand"/>

<
Customer CustomerName="Christina Berglund" Country="Sweden"/>

</
Customers>




Output:


<?xml version="1.0" encoding="utf-8"?>

<
xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <
xs:element name="Customers">

    <
xs:complexType>

      <
xs:sequence>

        <
xs:element maxOccurs="unbounded" name="Customer">

          <
xs:complexType>

            <
xs:attribute name="CustomerName" type="xs:string" use="required" />

            <
xs:attribute name="Country" type="xs:string" use="required" />

          </
xs:complexType>

        </
xs:element>

      </
xs:sequence>

    </
xs:complexType>

  </
xs:element>

</
xs:schema>


Happy coding!
Cheers!

0 comments: