使用XSD实现对XML文件的验证

 贴代码先:
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文件验证的功能,也有可能是我没发现。请发现了的朋友告诉我,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值