在C#中驗證XML與外部XSD模式
在C#中,驗證XML文件與外部XSD模式通常可以透過直接利用XML的xsi:schemaLocation
屬性中提供的資訊來實現。但是,在某些情況下,需要手動幹預才能執行驗證。
為了自動根據指定的模式驗證XML,需要建立一個XmlReaderSettings
實例,並在建立XmlReader
時將其傳遞給它。透過將ValidationType
設定為Schema
,並將ValidationFlags
設定為包含ProcessInlineSchema
、ProcessSchemaLocation
和ReportValidationWarnings
,讀取器將自動處理並根據xsi:schemaLocation
屬性中引用的模式驗證XML。
以下是一個示範此方法的程式碼片段:
<code class="language-csharp">using System.Xml; using System.Xml.Schema; using System.IO; public class ValidXSD { public static void Main() { // 设置验证设置。 XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema; settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation; settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); // 创建XmlReader对象。 XmlReader reader = XmlReader.Create("inlineSchema.xml", settings); // 解析文件。 while (reader.Read()) ; } // 显示任何警告或错误。 private static void ValidationCallBack(object sender, ValidationEventArgs args) { if (args.Severity == XmlSeverityType.Warning) Console.WriteLine("\t警告:未找到匹配的模式。未进行验证。" + args.Message); else Console.WriteLine("\t验证错误: " + args.Message); } }</code>
以上是如何在 C# 中根據引用的 XSD 驗證 XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!