📅  最后修改于: 2023-12-03 15:36:15.343000             🧑  作者: Mango
XML 作为一种可扩展标记语言,便于数据的存储和交换,同时也方便数据的分析与应用。但是,当我们需要使用 XML 数据时,往往需要对其进行有效性验证,以保证数据一致性和合法性。这时候,XML Schema(XSD)就派上用场了,它是一种用于描述和验证 XML 文档结构、内容和数据类型的语言。
在本篇文章中,我们将介绍如何从 XML 文件中生成 XSD 文件,在项目中使用 XSD 文件对 XML 数据进行验证。
我们可以使用以下代码来实现从 XML 文件生成 XSD 文件的功能:
using System.Xml;
using System.Xml.Schema;
public static void GenerateXsd(string xmlFilePath, string xsdFilePath)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(xmlFilePath);
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlSchemaInference schemaInference = new XmlSchemaInference();
schemaInference.InferSchema(xmlDocument, schemaSet);
XmlWriterSettings writerSettings = new XmlWriterSettings
{
Indent = true
};
using (XmlWriter writer = XmlWriter.Create(xsdFilePath, writerSettings))
{
XmlSchema schema = schemaSet.Schemas().Count > 0 ? schemaSet.Schemas()[0] : null;
schema?.Write(writer);
}
}
该方法接受两个参数,xmlFilePath
表示 XML 文件的路径,xsdFilePath
表示生成的 XSD 文件的路径。首先,我们使用 XmlDocument
加载 XML 文件。然后,我们初始化 XmlSchemaSet
和 XmlSchemaInference
对象,通过 InferSchema
方法从 xmlDocument
推断出 XSD 结构,最后使用 XmlWriter
将 XSD 文件写入到 xsdFilePath
文件中。
接下来,我们使用以下 XML 文件进行测试:
<?xml version="1.0" encoding="utf-8"?>
<Books>
<Book>
<Title>ASP.NET Core in Action</Title>
<Author>Andrew Lock</Author>
<Price>39.99</Price>
</Book>
<Book>
<Title>CSS Mastery: Advanced Web Standards Solutions (CSS Mastery)</Title>
<Author>Simon Collison</Author>
<Price>25.19</Price>
</Book>
</Books>
运行以下代码,输出 books.xsd
文件:
GenerateXsd("books.xml", "books.xsd");
运行完毕后,可以在项目的根目录下找到 books.xsd
文件,文件内容如下所示:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Books">
<xs:complexType>
<xs:sequence>
<xs:element name="Book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string" />
<xs:element name="Author" type="xs:string" />
<xs:element name="Price" type="xs:double" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
可以看到,通过推断,该 XML 文件的 XSD 结构已经被正确生成。
通过本文,我们介绍了如何从 XML 文件中生成 XSD 文件,为 XML 数据验证提供了便利。同时,我们也学习了使用 XmlSchemaInference
类从 XML 文件中推断出 XSD 结构的方法。希望本文对您有所帮助!