首页 > 代码库 > winform总结4> 工欲善其事,必先利其器之xml校验

winform总结4> 工欲善其事,必先利其器之xml校验

@echo 根据xml自动生成xml

@echo 当前路径包含空格会导致执行失败

::pause

@echo off
set path=%~dp0

for /r %path% %%i in (*.xml) do "xsd.exe" %%i /o:"%path% ::这里的xsd.exe换成你所在电脑上vs中该工具的路径,不想找,可以直接去下边的网盘地址下载.

@echo 写入成功
::@echo 工具通过vs自带sdks 通过xml格式生成对应的校验xsd文件
::@echo 手动生成请转到 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 
::@echo 将xml文件放到根目录,然后执行 xsd.exe 文件名的方式来生成,生成的文件为同名且后缀为xsd的文件

::pause

xml校验需要一个模版文件xsd做为格式校验。如上代码就是生成xsd,需要一个xsd文件【只要安装了vs,在vs的工具中可以找到,没有也没有关系可以从这里下载工具】

百度网盘: http://pan.baidu.com/s/1qXN2LhM 密码: x9i9

解压后将需要校验的xml文件放到同一个目录中,然后执行bat就可以得到一个xsd文件用它作为校验模版进行校验就可以了,可以修改这个xsd文件的校验方式以执行更为严格的校验

校验方式:

using System.Xml.Schema;
try { FileStream sm = "待校验的文件"; XmlDocument doc = new XmlDocument(); doc.Load(sm);//data.xml //验证xml格式是否正确 通过xsd验证 string error = ""; //声明XmlSchema XmlSchemaSet schemas = new XmlSchemaSet(); schemas.Add("", XmlReader.Create(AppDomain.CurrentDomain.BaseDirectory + "Model.xsd")); //声明事件处理方法 ValidationEventHandler eventHandler = new ValidationEventHandler(delegate(object sender, ValidationEventArgs e) { switch (e.Severity) { case XmlSeverityType.Error: error += e.Message; break; case XmlSeverityType.Warning: break; } }); doc.Schemas = schemas; //验证xml doc.Validate(eventHandler); //检查是否有异常 如果格式不正确就抛出来 if (error.Length > 0) { result.error = result.fileName + "--> XML不符合标准规范"; } else { doc.Save(AppDomain.CurrentDomain.BaseDirectory+"XMLFile/" + DateTime.Now.ToString("yyyymmddhhMMssss")+Guid.NewGuid().ToString() + ".xml"); } } catch { result.error = result.fileName+"--> XML文档格式错误"; }

整个过程中实际的代码量很少,基本上都不用写,最最关键的就是校验的文件。适用于同样格式的文档,但对文档格式有一定要求的地方使用。

 

winform总结4> 工欲善其事,必先利其器之xml校验