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!