XmlSchemaInference 类

定义

从 XML 文档中推理出 XML 架构定义语言 (XSD) 架构。 不能继承 XmlSchemaInference 类。

public ref class XmlSchemaInference sealed
public sealed class XmlSchemaInference
type XmlSchemaInference = class
Public NotInheritable Class XmlSchemaInference
继承
XmlSchemaInference

示例

此示例采用 XML 文件作为输入,并生成可验证示例 XML 的架构。

XmlReader^ reader = XmlReader::Create("contosoBooks.xml");
XmlSchemaSet^ schemaSet = gcnew XmlSchemaSet();
XmlSchemaInference^ schema = gcnew XmlSchemaInference();

schemaSet = schema->InferSchema(reader);

for each (XmlSchema^ s in schemaSet->Schemas())
{
    s->Write(Console::Out);
}
XmlReader reader = XmlReader.Create("contosoBooks.xml");
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlSchemaInference schema = new XmlSchemaInference();

schemaSet = schema.InferSchema(reader);

foreach (XmlSchema s in schemaSet.Schemas())
{
    s.Write(Console.Out);
}
Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml")
Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
Dim schema As XmlSchemaInference = New XmlSchemaInference()

schemaSet = schema.InferSchema(reader)

For Each s As XmlSchema In schemaSet.Schemas()
    s.Write(Console.Out)
Next

下面是输入 XML 文件。

<bookstore xmlns="http://www.contoso.com/books">
  <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

下面是从 XML 文档推断出的架构。

<?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>

注解

重要

  • 请勿使用来自未知或不受信任的源或位置的架构。 这样做会损害代码的安全性。
  • XML 架构 (包括内联架构) 本质上容易受到拒绝服务攻击;在不受信任的方案中不接受它们。
  • 架构验证错误消息和异常可能会公开有关架构文件的内容模型或 URI 路径的敏感信息。 请注意,不要向不受信任的调用方公开此信息。

命名空间 XmlSchemaInference 中的 System.Xml.Schema 类允许你从 XML 文档的结构推断 XML 架构定义语言 (XSD) 架构。 XmlSchemaInference 类输出的 XML 架构可以验证 XML 文档。

XmlSchemaInference 支持 W3C XML 和 XML 架构标准。 它可用于推断新架构或优化现有架构。

构造函数

XmlSchemaInference()

初始化 XmlSchemaInference 类的新实例。

属性

Occurrence

获取或设置 XmlSchemaInference.InferenceOption 值,该值影响从 XML 文档推理出的架构匹配项声明。

TypeInference

获取或设置影响从 XML 文档推理出的类型的 XmlSchemaInference.InferenceOption 值。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
InferSchema(XmlReader)

从指定的 XmlReader 对象包含的 XML 文档推理出 XML 架构定义语言 (XSD) 架构。

InferSchema(XmlReader, XmlSchemaSet)

从指定的 XmlReader 对象包含的 XML 文档推理出 XML 架构定义语言 (XSD) 架构,并通过用相同目标命名空间指定的 XmlSchemaSet 对象中的现有架构精炼已推理出的架构。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于