XmlSchemaInference Класс

Определение

Определяет схему языка объявления схем XML (XSD — XML Schema Definition Language) на основе документа XML. Класс 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 (XSD) из структуры XML-документа. Класс XmlSchemaInference выводит схему XML, которая может проверять XML-документ.

Класс XmlSchemaInference поддерживает стандарты XML и XML-схем W3C. Его можно использовать для вывода новой схемы или уточнения существующей схемы.

Конструкторы

XmlSchemaInference()

Инициализирует новый экземпляр класса XmlSchemaInference.

Свойства

Occurrence

Получает или задает значение XmlSchemaInference.InferenceOption, влияющее на объявления вхождения схем, определяемые на основе документа XML.

TypeInference

Получает или задает значение XmlSchemaInference.InferenceOption, влияющее на способ определения типов на основе обрабатываемого документа XML.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
InferSchema(XmlReader)

Определяет схему языка определения схем XML (XSD) на основе документа XML, содержащегося в указанном объекте XmlReader.

InferSchema(XmlReader, XmlSchemaSet)

Определяет схему языка определения схем XML (XSD) на основе документа XML, содержащегося в заданном объекте XmlReader, а также уточняет определенную схему, используя существующую схему из объекта XmlSchemaSet, заданную для того же целевого пространства имен.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к