Saya memiliki file XML dengan lokasi skema tertentu seperti ini:
xsi:schemaLocation="someurl ..\localSchemaPath.xsd"
Saya ingin memvalidasi dalam C #. Visual Studio, ketika saya membuka file, memvalidasi terhadap skema dan daftar kesalahan dengan sempurna. Namun, entah bagaimana, saya tidak dapat memvalidasi secara otomatis dalam C # tanpa menentukan skema yang akan divalidasi seperti:
XmlDocument asset = new XmlDocument();
XmlTextReader schemaReader = new XmlTextReader("relativeSchemaPath");
XmlSchema schema = XmlSchema.Read(schemaReader, SchemaValidationHandler);
asset.Schemas.Add(schema);
asset.Load(filename);
asset.Validate(DocumentValidationHandler);
Tidakkah saya harus dapat memvalidasi dengan skema yang ditentukan dalam file XML secara otomatis? Apa yang saya lewatkan?
Jawaban:
Anda perlu membuat turunan XmlReaderSettings dan meneruskannya ke XmlReader saat Anda membuatnya. Kemudian Anda dapat berlangganan ke
ValidationEventHandler
dalam pengaturan untuk menerima kesalahan validasi. Kode Anda akan terlihat seperti ini:sumber
using
klausa untuk kelengkapan :)settings.ValidationEventHandler += (o, args) => { errors = true; // More code };
Cara yang lebih sederhana, jika Anda menggunakan .NET 3.5, adalah menggunakan
XDocument
danXmlSchemaSet
memvalidasi.Lihat dokumentasi MSDN untuk bantuan lebih lanjut.
sumber
<catalog><![CDATA[my <i> new </i> catalog....]]></catalog>
adalah cara yang tepat untuk melakukan itu.Berikut contoh memvalidasi file XML dan menghasilkan kesalahan atau peringatan yang sesuai.
Contoh sebelumnya menggunakan file input berikut.
books.xsd
sumber
secara pribadi saya lebih suka memvalidasi tanpa panggilan balik:
(lihat posting Timiz0r di Validasi Skema XML Synchronous? .NET 3.5 )
sumber
Saya telah melakukan semacam ini validasi otomatis dalam VB dan ini adalah bagaimana saya melakukannya (dikonversi ke C #):
Lalu saya berlangganan
settings.ValidationEventHandler
acara sambil membaca file.sumber