Using the XsdInference Namespace
Like XmlDiffPatch
,
XsdInference
can be added to your Global Assembly
Cache for your convenience, and you can add it as a reference in your
Visual Studio .NET project or Makefile.
The
XsdInference
namespace contains one class,
Infer
. Infer
has a single
overloaded method, InferSchema( )
, which returns
an XmlSchemaCollection
. One overload takes just an
XmlReader
, and the other one takes an
XmlReader
and an
XmlSchemaCollection
.
Given an
XmlReader
for a particular XML document, you can
create an XML Schema definition and write it to the console using the
code in Example 14-1.
using System; using System.Xml; using System.Xml.Schema; using Microsoft.XsdInference; public class XsdInfer { public static void Main(string [ ] args) { try { XmlSchemaCollection schemas = null; Infer infer = new Infer( ); XmlTextReader reader = new XmlTextReader(args[0]); schemas = infer.InferSchema(reader); foreach (XmlSchema schema in schemas) { schema.Write(Console.Out); } } catch (Exception e) { Console.Error.WriteLine(e); } } }
The usage of the Infer class is fairly straightforward. In Example 14-1, you can see that an instance of
Infer
is created, and its
Infer
( ) method is called. Infer(
)
returns an XmlSchemaCollection
.
Example 14-2 shows
another pattern of usage for the Infer
class, in
which several XML documents are used to progressively refine an XML
Schema. The changed lines are highlighted.
Get .NET & XML now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.