XmlSchemaInference Klasa

Definicja

Wywnioskuje schemat języka XML Schema Definition Language (XSD) z dokumentu XML. Nie XmlSchemaInference można dziedziczyć klasy.

public ref class XmlSchemaInference sealed
public sealed class XmlSchemaInference
type XmlSchemaInference = class
Public NotInheritable Class XmlSchemaInference
Dziedziczenie
XmlSchemaInference

Przykłady

W tym przykładzie plik XML jest pobierany jako dane wejściowe i generuje schemat, który może zweryfikować przykładowy kod 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

Poniżej znajduje się wejściowy plik 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>

Poniżej przedstawiono schemat wywnioskowany z dokumentu 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>

Uwagi

Ważne

  • Nie używaj schematów z nieznanych lub niezaufanych źródeł ani lokalizacji. Spowoduje to naruszenie bezpieczeństwa kodu.
  • Schematy XML (w tym schematy wbudowane) są z natury narażone na ataki typu "odmowa usługi"; nie akceptuj ich w niezaufanych scenariuszach.
  • Komunikaty o błędach weryfikacji schematu i wyjątki mogą ujawniać poufne informacje o modelu zawartości lub ścieżkach identyfikatorów URI do pliku schematu. Uważaj, aby nie ujawniać tych informacji niezaufanym obiektom wywołującym.

Klasa XmlSchemaInference w System.Xml.Schema przestrzeni nazw umożliwia wnioskowanie schematu języka XSD (XML Schema Definition Language) ze struktury dokumentu XML. Klasa XmlSchemaInference zwraca schemat XML, który może zweryfikować dokument XML.

Klasa XmlSchemaInference obsługuje standardy schematów XML i XML W3C. Może służyć do wnioskowania nowego schematu lub do uściślinia istniejącego schematu.

Konstruktory

XmlSchemaInference()

Inicjuje nowe wystąpienie klasy XmlSchemaInference.

Właściwości

Occurrence

Pobiera lub ustawia XmlSchemaInference.InferenceOption wartość, która ma wpływ na deklaracje wystąpień schematu wnioskowane z dokumentu XML.

TypeInference

Pobiera lub ustawia XmlSchemaInference.InferenceOption wartość, która ma wpływ na typy wnioskowane z dokumentu XML.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InferSchema(XmlReader)

Wnioskuje schemat języka XML Schema Definition Language (XSD) z dokumentu XML zawartego XmlReader w określonym obiekcie.

InferSchema(XmlReader, XmlSchemaSet)

Wnioskuje schemat języka XML Schema Definition Language (XSD) z dokumentu XML zawartego w XmlReader określonym obiekcie i uściśli schemat wnioskowany przy użyciu istniejącego schematu w XmlSchemaSet obiekcie określonym z tą samą docelową przestrzenią nazw.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy