CARA: Memvalidasi XML fragmen terhadap skema XML dalam Visual C#.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 318504 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan cara menggunakan XmlValidatingReader dan XMLSchemaCollection objek untuk memvalidasi fragmen Extensible Markup Language (XML) terhadap skema XML.

XmlValidatingReader menerapkan XmlReader kelas dan menyediakan dukungan untuk validasi data XML. The Skema properti XmlValidatingReader menghubungkan pembaca untuk skema file cache di XmlSchemaCollection. The ValidationType properti XmlValidatingReader menentukan jenis pembaca harus melakukan validasi. Jika Anda mengatur properti ValidationType.None, Anda membuat pembaca nonvalidating.

Anda hanya dapat menambahkan skema XML skema definisi bahasa (XSD) dan XML Data mengurangi (XDR) skema untuk XmlSchemaCollection. Penggunaan Tambahkan metode dengan namespace URI untuk memuat skema. Untuk skema XML, namespace khas URI adalah targetNamespace properti skema.

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang akan Anda perlukan:
  • Microsoft Visual Studio.NET yang diinstal pada sistem operasi Microsoft Windows yang kompatibel
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan topik-topik berikut:
  • Visual C#.NET
  • Standar XML dasar
  • Skema XSD

Membuat skema XSD

Paste kode berikut dalam file teks baru bernama C:\Books.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:bookstore-schema" elementFormDefault="qualified" targetNamespace="urn:bookstore-schema">
	<xsd:element name="bookstore" type="bookstoreType" />
	<xsd:element name="comment" type="xsd:string" />
	<xsd:element name="author" type="authorName"/>
	<xsd:complexType name="authorName">
		<xsd:sequence>
			<xsd:element name="first-name" type="xsd:string" />
			<xsd:element name="last-name" type="xsd:string" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="bookstoreType">
		<xsd:sequence maxOccurs="unbounded">
			<xsd:element name="book" type="bookType" />
			<xsd:element ref="comment" minOccurs="0" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="bookType">
		<xsd:sequence>
			<xsd:element name="title" type="xsd:string" />
			<xsd:element ref="author" />
			<xsd:element name="price" type="xsd:decimal" />
		</xsd:sequence>
		<xsd:attribute name="genre" type="xsd:string" />
	</xsd:complexType>
	
</xsd:schema>
				

Menciptakan Visual C#.NET aplikasi

  1. Buat baru Visual C#.Aplikasi NET konsol.
  2. Ganti kode dalam Class1.cs dengan kode berikut:
    using System;
    using System.Xml;
    using System.Xml.Schema;
    
    
    namespace ConsoleApplication3
    {
    	/// <summary>
    	/// Summary description for Class1.
    	/// </summary>
    	class Class1
    	{
    		/// <summary>
    		/// The main entry point for the application.
    		/// </summary>
    		System.Boolean m_success;
    
    		[STAThread]
    		static void Main(string[] args)
    		{
    			// 
    			// TODO: Add code to start application here.
    			// 
    			XmlValidatingReader reader  = null;
               XmlSchemaCollection myschema = new XmlSchemaCollection();
    			ValidationEventHandler eventHandler = new ValidationEventHandler(Class1.ShowCompileErrors );
    
    
    			try
    			{
    				//Create the XML fragment to be parsed.
    				String xmlFrag = "<author  xmlns='urn:bookstore-schema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +
    					"<first-name>Herman</first-name>" +
    					"<last-name>Melville</last-name>" +
    					"</author>";
    
    				//Create the XmlParserContext.
    				XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);
                  
    				//Implement the reader. 
    				reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context);
    				//Add the schema.
    				myschema.Add("urn:bookstore-schema", "c:\\Books.xsd");
    
    				//Set the schema type and add the schema to the reader.
    				reader.ValidationType = ValidationType.Schema;
    				reader.Schemas.Add(myschema);
    
    				while (reader.Read())
    				{
    				}
                   
    				Console.WriteLine("Completed validating xmlfragment");
    			}
    			catch (XmlException XmlExp)
    			{
    				Console.WriteLine(XmlExp.Message);
    			}
    			catch(XmlSchemaException XmlSchExp)
    			{
    				Console.WriteLine(XmlSchExp.Message);
    			}
    			catch(Exception GenExp)
    			{
    				Console.WriteLine(GenExp.Message);
    			}
    			finally
    			{
    				Console.Read();
    			}
    
    		}
    		public static void ShowCompileErrors(object sender, ValidationEventArgs args)
    		{
    			Console.WriteLine("Validation Error: {0}", args.Message);
    		}
    
    	}
    }
    					
  3. Apabila pesan ditampilkan di jendela output, fragmen XML adalah elemen yang berlaku:
    Completed validating xmlfragment
    					
CATATAN: Hanya jenis Deklarasi dan unsur-unsur top-level dalam skema XML divalidasi terhadap skema XML. Subelements dianggap sebagai lokal dan karena itu tidak dapat divalidasi. Untuk memvalidasi subelement, menyatakan top-level elemen dan merujuk kepada yang.

REFERENSI

Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
307379 CARA: Memvalidasi dokumen XML dengan menggunakan DTD, XDR, atau XSD dalam Visual C#.NET
313826 INFO: Roadmap untuk skema XML di.NET Framework
313651 INFO: Roadmap untuk XML di.NET Framework
Untuk informasi tambahan, lihat situs-situs Website MSDN berikut:
System.xml Namespace
.aspx http://MSDN.Microsoft.com/en-us/library/System.XML (VS.71)

Layanan Web XML
http://MSDN.Microsoft.com/XML

Properti

ID Artikel: 318504 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Kata kunci: 
kbhowtomaster kbmt KB318504 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:318504

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com