XmlSchemaInference.InferSchema Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen XML belgesinden bir XML Şema Tanım Dili (XSD) şeması çıkartır.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| InferSchema(XmlReader) |
Belirtilen nesnede bulunan XML belgesinden bir XML Şema Tanım Dili (XSD) şeması çıkartır XmlReader . |
| InferSchema(XmlReader, XmlSchemaSet) |
Belirtilen nesnede XmlReader bulunan XML belgesinden bir XML Şema Tanım Dili (XSD) şeması çıkarsar ve aynı hedef ad alanıyla belirtilen nesnede var olan bir şemayı kullanarak çıkarılmış şemayı XmlSchemaSet iyiler. |
InferSchema(XmlReader)
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
Belirtilen nesnede bulunan XML belgesinden bir XML Şema Tanım Dili (XSD) şeması çıkartır XmlReader .
public:
System::Xml::Schema::XmlSchemaSet ^ InferSchema(System::Xml::XmlReader ^ instanceDocument);
public System.Xml.Schema.XmlSchemaSet InferSchema(System.Xml.XmlReader instanceDocument);
member this.InferSchema : System.Xml.XmlReader -> System.Xml.Schema.XmlSchemaSet
Public Function InferSchema (instanceDocument As XmlReader) As XmlSchemaSet
Parametreler
Döndürülenler
XmlSchemaSet Çıkarsanan şemaları içeren bir nesne.
Özel durumlar
XML belgesi iyi biçimlendirilmemiş.
XmlReader Nesne kök düğümde veya bir öğede konumlandırılmaz. Şema çıkarımı işlemi sırasında bir hata oluşur.
Örnekler
Bu örnek giriş olarak bir XML dosyası alır ve örnek XML'yi doğrulayan bir şema oluşturur.
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
Giriş XML dosyası aşağıdadır.
<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 belgesinden çıkarıla şema aşağıdadır.
<?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>
Açıklamalar
yöntemi, InferSchema belirtilen nesnede bulunan XML örneği belgesinden bir veya daha fazla W3C XML Şema Tanımı Dili (XSD) şeması çıkartır XmlReader . XML belgesinde birden çok ad alanından öğeler ve öznitelikler varsa, birden çok şema oluşturulur: belgede kullanılan her ad alanı için bir şema. Birincil şema, XML belgesinin tamamını doğrulayan şemadır ve hedef ad alanı XML belgesinin belge öğesinin ad alanıyla aynıdır.
Yöntemi kullanırken dikkate alınması gereken önemli notlar aşağıdadır InferSchema .
yöntemi, InferSchema XML belgesindeki tüm
xsi:type,xsi:schemaLocationveyaxsi:noNamespaceSchemaLocationözniteliklerini yoksayar.XmlReader Nesne yazılırsa, içerdiği tür bilgileri yoksayılır.
Nesne, XML belgesinin XmlReader kök öğesi olmayan bir öğeye konumlandırıldıysa, yalnızca bu öğe için bir şema çıkarılır. XmlReader Nesne bir öğeye konumlandırılmazsa, Read bir öğeyle karşılaşılana kadar (örneğin, olduğundaNodeType) yöntemi parametresinde XmlReader çağrılırElement. Bu noktada çıkarım işlemi bu öğeden başlar. Belgenin sonuna kadar hiçbir öğeyle karşılaşılmadıysa, bir ArgumentException oluşturulur.
Şunlara uygulanır
InferSchema(XmlReader, XmlSchemaSet)
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
- Kaynak:
- Infer.cs
Belirtilen nesnede XmlReader bulunan XML belgesinden bir XML Şema Tanım Dili (XSD) şeması çıkarsar ve aynı hedef ad alanıyla belirtilen nesnede var olan bir şemayı kullanarak çıkarılmış şemayı XmlSchemaSet iyiler.
public:
System::Xml::Schema::XmlSchemaSet ^ InferSchema(System::Xml::XmlReader ^ instanceDocument, System::Xml::Schema::XmlSchemaSet ^ schemas);
public System.Xml.Schema.XmlSchemaSet InferSchema(System.Xml.XmlReader instanceDocument, System.Xml.Schema.XmlSchemaSet schemas);
member this.InferSchema : System.Xml.XmlReader * System.Xml.Schema.XmlSchemaSet -> System.Xml.Schema.XmlSchemaSet
Public Function InferSchema (instanceDocument As XmlReader, schemas As XmlSchemaSet) As XmlSchemaSet
Parametreler
- schemas
- XmlSchemaSet
Çıkarsanan XmlSchemaSet şemayı daraltmak için kullanılan mevcut şemayı içeren bir nesne.
Döndürülenler
XmlSchemaSet Çıkarsanan şemaları içeren bir nesne.
Özel durumlar
XML belgesi iyi biçimlendirilmemiş.
XmlReader Nesne kök düğümde veya bir öğede konumlandırılmaz. Şema çıkarımı işlemi sırasında bir hata oluşur.
Örnekler
Aşağıdaki örnek kod, XML belgesi 1'i giriş olarak alır ve XML belge 1'i doğrulayan bir şema oluşturur. Örnek kod daha sonra XML belge 2'yi alır ve XML belge 1'den oluşturulan şemayı, XML belge 2'de bulunan değişikliklere göre daraltır.
Xml belgesi 1 aşağıdadır.
<?xml version="1.0" encoding="utf-8"?>
<item xmlns="http://www.contoso.com/items" productID="123456789">
<name>Hammer</name>
<price>9.95</price>
<supplierID>1929</supplierID>
</item>
Xml belgesi 2 aşağıdadır.
<?xml version="1.0" encoding="utf-8"?>
<item xmlns="http://www.contoso.com/items" productID="A53-246">
<name>Paint</name>
<price>12.50</price>
</item>
Aşağıdaki örnek kod, içinde readeryer alan ilk XML belgesinden bir şema çıkartır ve sonra içindeki ikinci XML belgesinde reader1bulunan değişikliklerle çıkarılmış şemayı iyileştirilir. Örnek kod, şemayı çıkarsamak için ilk aşırı yüklenmiş InferSchema yöntemi, nesnedeki mevcut şemayı XmlSchemaSet daraltmak için ikinci aşırı yüklenmiş InferSchema yöntemi kullanır.
XmlReader reader = XmlReader.Create("item1.xml");
XmlReader reader1 = XmlReader.Create("item2.xml");
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlSchemaInference inference = new XmlSchemaInference();
schemaSet = inference.InferSchema(reader);
// Display the inferred schema.
Console.WriteLine("Original schema:\n");
foreach (XmlSchema schema in schemaSet.Schemas("http://www.contoso.com/items"))
{
schema.Write(Console.Out);
}
// Use the additional data in item2.xml to refine the original schema.
schemaSet = inference.InferSchema(reader1, schemaSet);
// Display the refined schema.
Console.WriteLine("\n\nRefined schema:\n");
foreach (XmlSchema schema in schemaSet.Schemas("http://www.contoso.com/items"))
{
schema.Write(Console.Out);
}
Dim reader As XmlReader = XmlReader.Create("item1.xml")
Dim reader1 As XmlReader = XmlReader.Create("item2.xml")
Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
Dim inference As XmlSchemaInference = New XmlSchemaInference()
schemaSet = inference.InferSchema(reader)
' Display the inferred schema.
Console.WriteLine("Original schema:\n")
For Each schema As XmlSchema In schemaSet.Schemas("http://www.contoso.com/items")
schema.Write(Console.Out)
Next
' Use the additional data in item2.xml to refine the original schema.
schemaSet = inference.InferSchema(reader1, schemaSet)
' Display the refined schema.
Console.WriteLine("\n\nRefined schema:\n")
For Each schema As XmlSchema In schemaSet.Schemas("http://www.contoso.com/items")
schema.Write(Console.Out)
Next
Aşağıdaki şema, XML belgesi 1'den elde edilen şemadır.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/items" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="price" type="xs:decimal" />
<xs:element name="supplierID" type="xs:unsignedShort" />
</xs:sequence>
<xs:attribute name="productID" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
Aşağıdaki şema, xml belgesi 2'ye göre yukarıdaki şemanın geliştirilmiş sürümüdür.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/items" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="price" type="xs:decimal" />
<xs:element minOccurs="0" name="supplierID" type="xs:unsignedShort" />
</xs:sequence>
<xs:attribute name="productID" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
Açıklamalar
yöntemi, InferSchema belirtilen nesnede bulunan XML örneği belgesinden bir veya daha fazla W3C XML Şema Tanımı Dili (XSD) şeması çıkartır XmlReader . XML belgesinde birden çok ad alanından öğeler ve öznitelikler varsa, birden çok şema oluşturulur: belgede kullanılan her ad alanı için bir şema. Birincil şema, XML belgesinin tamamını doğrulayan şemadır ve hedef ad alanı XML belgesinin belge öğesinin ad alanıyla aynıdır.
Yöntemi kullanırken dikkate alınması gereken önemli notlar aşağıdadır InferSchema .
yöntemi, InferSchema XML belgesindeki tüm
xsi:type,xsi:schemaLocationveyaxsi:noNamespaceSchemaLocationözniteliklerini yoksayar.XmlReader Nesne yazılırsa, içerdiği tür bilgileri yoksayılır.
Nesne, XML belgesinin XmlReader kök öğesi olmayan bir öğeye konumlandırıldıysa, yalnızca bu öğe için bir şema çıkarılır. XmlReader Nesne bir öğeye konumlandırılmazsa, Read bir öğeyle karşılaşılana kadar (örneğin, olduğundaNodeType) yöntemi parametresinde XmlReader çağrılırElement. Bu noktada çıkarım işlemi bu öğeden başlar. Belgenin sonuna kadar hiçbir öğeyle karşılaşılmadıysa, bir ArgumentException oluşturulur.
Bir XmlSchemaSet nesne parametre olarak geçirilirse ve nesnenin XmlReader konumlandırıldığı öğe içindeki şemalardan XmlSchemaSetbirinde tanımlanırsa, aynı hedef ad alanına sahip parametrede XmlSchemaSet var olan bir şemayı daraltmak için çıkarılmış şema kullanılır; aksi takdirde ad alanı için yeni bir şema çıkarılır.