贴代码先:
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Xml;
using
System.Xml.Schema;
using
System.IO;
namespace
XmlChecker
...
{ class Program ...{ static void Main(string[] args) ...{ if (args.Length != 2) ...{ Console.WriteLine("usage: XmlChecker.exe xmlfile xsdfile"); return; } if (!File.Exists(args[0])) ...{ Console.WriteLine("xml file not exists!"); return; } if (!File.Exists(args[1])) ...{ Console.WriteLine("xsd file not exists!"); return; } XmlReaderSettings xsd = new XmlReaderSettings(); xsd.ValidationType = ValidationType.Schema; xsd.Schemas.Add("", args[1]); xsd.ValidationEventHandler += new ValidationEventHandler(xsd_ValidationEventHandler); XmlReader xml = XmlReader.Create(args[0], xsd); while (xml.Read()) ...{ } xml.Close(); xml = null; Console.WriteLine("Check Complete!"); } private static void xsd_ValidationEventHandler(object sender, ValidationEventArgs e) ...{ Console.WriteLine(e.Severity.ToString() + " " + e.Message + "(" + e.Exception.LineNumber + ", " + (e.Exception.LinePosition/2) + ")"); } }}
在参数中指定XML文件和XSD文件的位置,就能够显示出XML文件中不符合架构的地方。
奇怪的是,VS2005中居然没有内置XML文件验证的功能,也有可能是我没发现。请发现了的朋友告诉我,谢谢!
转载请注明原文地址: https://ibbs.8miu.com/read-27977.html