c# – 在Code中从XML创建XSD

我正在使用MSDN中的这段代码从XML创建XSD

XmlReader reader = XmlReader.Create("contosoBooks.xml");
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlSchemaInference schema = new XmlSchemaInference();

schemaSet = schema.InferSchema(reader);

foreach (XmlSchema s in schemaSet.Schemas())
{
   textbox.text = s.ToString();
}

我想根据我的xml文件输出.xsd.当我生成.xsd文件时,我唯一得到的内容是:System.Xml.Schema.XmlSchema

当我使用Visual Studio选项生成XSD来创建Schema时,它会正确显示.但是,我有超过150个xml文档,我需要创建XSD,因此需要一个编程选项.有人可以帮忙吗?

这就是你所缺少的……
而不是简单地做s.ToString(),这样做:

XmlWriter writer;
        int count=0;
        foreach (XmlSchema s in schemaSet.Schemas())
        {
            writer = XmlWriter.Create((count++).ToString()+"_contosobooks.xsd");
            s.Write(writer);
            writer.Close();
            Console.WriteLine("Done " + count);
        }
        reader.Close();

然后,您可以编写适当的逻辑来更好地执行读/写操作,读取许多xml文件并创建相应的xsd文件等.

我从这里拿走了contosobooks.xml:
https://code.google.com/p/code4cs/source/browse/trunk/AppCase/dNet/Xml/data/contosoBooks.xml?spec=svn135&r=135

输出xsd是:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:date" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
翻译自:https://stackoverflow.com/questions/22835730/create-xsd-from-xml-in-code

转载注明原文:c# – 在Code中从XML创建XSD