XmlSchemaInference.InferSchema Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyimpulkan skema XML Schema Definition Language (XSD) dari dokumen XML yang ditentukan.
Overload
| Nama | Deskripsi |
|---|---|
| InferSchema(XmlReader) |
Menyimpulkan skema XML Schema Definition Language (XSD) dari dokumen XML yang terkandung dalam XmlReader objek yang ditentukan. |
| InferSchema(XmlReader, XmlSchemaSet) |
Menyimpulkan skema XML Schema Definition Language (XSD) dari dokumen XML yang terkandung dalam XmlReader objek yang ditentukan, dan menyempurnakan skema yang disimpulkan menggunakan skema yang ada dalam XmlSchemaSet objek yang ditentukan dengan namespace target yang sama. |
InferSchema(XmlReader)
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
Menyimpulkan skema XML Schema Definition Language (XSD) dari dokumen XML yang terkandung dalam XmlReader objek yang ditentukan.
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
Parameter
Mengembalikan
Objek XmlSchemaSet yang berisi skema yang disimpulkan.
Pengecualian
Dokumen XML tidak terbentuk dengan baik.
Objek XmlReader tidak diposisikan pada simpul akar atau pada elemen. Terjadi kesalahan selama proses inferensi skema.
Contoh
Contoh ini mengambil file XML sebagai input, dan menghasilkan skema yang dapat memvalidasi contoh XML.
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
Berikut ini adalah file XML input.
<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>
Berikut ini adalah skema yang disimpulkan dari dokumen 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>
Keterangan
Metode ini InferSchema menyimpulkan satu atau beberapa skema W3C XML Schema Definition Language (XSD) dari dokumen instans XML yang terkandung dalam XmlReader objek yang ditentukan. Jika dokumen XML berisi elemen dan atribut dari beberapa namespace, maka beberapa skema dihasilkan: satu untuk setiap namespace yang digunakan dalam dokumen. Skema utama adalah skema yang dapat memvalidasi seluruh dokumen XML, dan namespace targetnya sama dengan namespace dari elemen dokumen dokumen XML.
Berikut ini adalah catatan penting yang perlu dipertimbangkan InferSchema saat menggunakan metode .
Metode ini InferSchema mengabaikan atribut ,
xsi:schemaLocation, atauxsi:noNamespaceSchemaLocationapa punxsi:typedalam dokumen XML.Jika objek diketik XmlReader , informasi jenis yang dikandungnya akan diabaikan.
XmlReader Jika objek diposisikan pada elemen yang bukan elemen akar dokumen XML, skema hanya disimpulkan untuk elemen tersebut. XmlReader Jika objek tidak diposisikan pada elemen, Read metode dipanggil pada XmlReader parameter hingga elemen ditemui (misalnya, kapan NodeType ).Element Pada titik ini, proses inferensi dimulai dari elemen tersebut. Jika tidak ada elemen yang ditemui hingga akhir dokumen, maka ArgumentException akan dilemparkan.
Berlaku untuk
InferSchema(XmlReader, XmlSchemaSet)
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
- Sumber:
- Infer.cs
Menyimpulkan skema XML Schema Definition Language (XSD) dari dokumen XML yang terkandung dalam XmlReader objek yang ditentukan, dan menyempurnakan skema yang disimpulkan menggunakan skema yang ada dalam XmlSchemaSet objek yang ditentukan dengan namespace target yang sama.
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
Parameter
- schemas
- XmlSchemaSet
Objek XmlSchemaSet yang berisi skema yang ada digunakan untuk menyempurnakan skema yang disimpulkan.
Mengembalikan
Objek XmlSchemaSet yang berisi skema yang disimpulkan.
Pengecualian
Dokumen XML tidak terbentuk dengan baik.
Objek XmlReader tidak diposisikan pada simpul akar atau pada elemen. Terjadi kesalahan selama proses inferensi skema.
Contoh
Contoh kode berikut mengambil dokumen XML 1 sebagai input dan menghasilkan skema yang dapat memvalidasi dokumen XML 1. Kode contoh kemudian mengambil dokumen XML 2 dan menyempurnakan skema yang dihasilkan dari dokumen XML 1, berdasarkan perubahan yang ditemukan dalam dokumen XML 2.
Berikut ini adalah dokumen XML 1.
<?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>
Berikut ini adalah dokumen XML 2.
<?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>
Contoh kode berikut menyimpulkan skema dari dokumen XML pertama yang terkandung dalam reader, lalu menyempurnakan skema yang disimpulkan dengan perubahan yang ditemukan dalam dokumen XML kedua yang terkandung dalam reader1. Contoh kode menggunakan metode overload pertama untuk menyimpulkan InferSchema skema, dan metode kelebihan beban InferSchema kedua untuk memperbaiki skema yang ada dalam XmlSchemaSet objek.
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
Skema berikut adalah skema yang disimpulkan dari dokumen XML 1.
<?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>
Skema berikut adalah versi skema yang disempurnakan di atas, berdasarkan dokumen XML 2.
<?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>
Keterangan
Metode ini InferSchema menyimpulkan satu atau beberapa skema W3C XML Schema Definition Language (XSD) dari dokumen instans XML yang terkandung dalam XmlReader objek yang ditentukan. Jika dokumen XML berisi elemen dan atribut dari beberapa namespace, beberapa skema dihasilkan: satu untuk setiap namespace yang digunakan dalam dokumen. Skema utama adalah skema yang dapat memvalidasi seluruh dokumen XML, dan namespace targetnya sama dengan namespace dari elemen dokumen dokumen XML.
Berikut ini adalah catatan penting yang perlu dipertimbangkan InferSchema saat menggunakan metode .
Metode ini InferSchema mengabaikan atribut ,
xsi:schemaLocation, atauxsi:noNamespaceSchemaLocationapa punxsi:typedalam dokumen XML.Jika objek diketik XmlReader , informasi jenis yang dikandungnya akan diabaikan.
XmlReader Jika objek diposisikan pada elemen yang bukan elemen akar dokumen XML, skema hanya disimpulkan untuk elemen tersebut. XmlReader Jika objek tidak diposisikan pada elemen, Read metode dipanggil pada XmlReader parameter hingga elemen ditemui (misalnya, kapan NodeType ).Element Pada titik ini, proses inferensi dimulai dari elemen tersebut. Jika tidak ada elemen yang ditemui hingga akhir dokumen, maka ArgumentException akan dilemparkan.
XmlSchemaSet Jika objek diteruskan sebagai parameter dan elemen tempat objek diposisikan didefinisikan dalam salah satu skema dalam XmlSchemaSet, skema yang disimpulkan digunakan untuk memperbaiki skema yang XmlReader ada dalam XmlSchemaSet parameter dengan namespace target yang sama; jika tidak, skema baru disimpulkan untuk namespace layanan.