using System;
using System.Text;
using System.Xml; namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
StringBuilder sb = null;
protected void ValidateFile(object sender, EventArgs e)
{
string dataFile = Server.MapPath("Order.xml");
string schemaFile = Server.MapPath("OrderSchema.xsd");
string namespaceUrl = "http://tempuri.org/OrderSchema.xsd"; XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(namespaceUrl, schemaFile);
settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler); string errorMessage="这不是一个合乎规范的数据文件";
sb = new StringBuilder(); XmlReader reader = XmlReader.Create(dataFile, settings);
try
{
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Document && reader.NamespaceURI != namespaceUrl)
{
Response.Write(errorMessage);
break;
}
}
}
catch (XmlException ex)
{
sb.AppendFormat("{0}<br />", ex.Message);
}
finally
{
reader.Close();
} if (sb.Length == )
Response.Write("该文档是合法的");
else
Response.Write(sb.ToString());
} void settings_ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs e)
{
sb.AppendFormat("{0}<br />", e.Message);
}
}
}

如果传过来的是XMl的string类型

         StringBuilder sb = null;
public bool CheckXML(string xml)
{
if (xml == null || xml == "")
{
return true;
}
byte[] array = Encoding.ASCII.GetBytes(xml);
MemoryStream stream = new MemoryStream(array); string schemaFile = System.Web.HttpContext.Current.Server.MapPath("K2HandoffTemplate.xsd"); XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(null, schemaFile);
settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);
sb = new StringBuilder(); XmlReader reader = XmlReader.Create(stream, settings);
try
{
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Document)
{
return false;
}
}
}
catch (XmlException ex)
{
return false;
}
finally
{
reader.Close();
} if (sb.Length == )
return true;
else
return false;
} void settings_ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs e)
{
sb.AppendFormat("{0}<br />", e.Message);
}

用xsd验证xml的更多相关文章

  1. C# xsd 验证 XML数据有效性 问题

    使用XSD进行批量数据导入时生成的XML数据有效性这样的功能已经不是第一次做了,之前做的时候都没有碰到什么问题,这些天在开发中遇到了一个很头痛的问题就是无论XSD文件规则怎么写,验证都是通过的. 下面 ...

  2. 使用架构(XSD)验证XML文件

    假使说XML是一个数据库,那么XSD就是这个数据库的结构.由此可见,XSD是如此重要,如果没有它,我们如何声明以及验证我们需要的XML数据文件的格式和合法性呢?那是不可能完成的任务,如果你将XML数据 ...

  3. C# 利用Xsd验证xml

    最近做项目时,用到了xml的序列化与反序列化, 发现最好用xsd来验证xml, 因为反序列化xml不校验xsd. 方法:xmlData变量为xml字符串 MemoryStream ms = new M ...

  4. XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

    XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大. 作用有: ①定义 ...

  5. C# 使用xsd文件验证XML 格式是否正确

    C# 使用xsd文件验证XML 格式是否正确 核心示例代码: //创建xmlDocument XmlDocument doc = new XmlDocument(); //创建声明段 如<?xm ...

  6. 28.XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

    转自https://www.cnblogs.com/gdjlc/archive/2013/09/08/3308229.html XML Schema 语言也称作 XML Schema 定义(XML S ...

  7. XML的应用 ---- 从一个范例看xml数据、xsd验证、xslt样式

    从一个范例看XML的应用 引言 如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个问题:在那篇文章的方式2中,客户端仅仅是发送了页面上一个文本框的内容到服务端 ...

  8. Delphi 7验证XML合法性(利用DTD、XSD)

    拥有正确语法的XML被称为“形式良好”的XML.通过DTD验证的XML是“合法”的XML.DTD(文档类型定义)的作用是定义XML 文档的合法构建模块.它使用一系列的合法元素来定义文档结构.XML S ...

  9. 通过xsd schema结构来验证xml是否合法

    import sys import StringIO import lxml from lxml import etree from StringIO import StringIO # Constr ...

随机推荐

  1. SSH 使用JUnit测试

    前提是引入两个包:org.springframework.test-3.1.3.RELEASE和JUnit4. package com.qk.test; import javax.annotation ...

  2. Linux操作系统下的Sudo命令

    查看.修改或者执行某些命令需要root用户的权限,如果不想直接切换到root用户,就可以使用sudo命令.sudo命令用于针对单个命令授予临时权限.sudo仅在需要时授予用户权限,减少了用户因为错误执 ...

  3. C# Socket 入门2(转)

    现在来传一个图片看看, 改改程序, 看看服务端 图片为 140K, 1.jgp 1. 服务端  1 using System;  2 using System.Collections.Generic; ...

  4. libprotobuf ERROR

    google/protobuf/wire_format.cc:1059] Encountered string containing invalid UTF-8 data while parsing  ...

  5. ios开发--第三方整理

    一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://github. ...

  6. android-exploitme(七):高级加密

    在上一个议题上我们解释了为什么不能把信息明文保存在设备上,应该加密,那么加密就是安全的吗? 下面来看一下, 编译BasicEncryptionSolution.apk,安装

  7. Ubuntu刷新DNS

    linux刷新dns的缓存方法是: sudo /etc/init.d/nscd restart 如果发现提示命令找不到: sudo: /etc/init.d/nscd: command not fou ...

  8. Windows下搭建Android开发环境

    1.下载eclipse google eclipse,到官网去下载最新版的,推荐java ee版本的,当然你要用android版本或者standard也无妨 2.下载android sdk,安装相关的 ...

  9. 【分享】IT产业中的三大定理(一) —— 摩尔定理(Moore's Law)

    科技行业流传着很多关于比尔·盖茨的故事,其中一个是他和通用汽车公司老板之间的对话.盖茨说,如果汽车工业能够像计算机领域一样发展,那么今天,买一辆汽车只需要 25 美元,一升汽油能跑四百公里.通用汽车老 ...

  10. 下拉刷新控件(5)SwipeRefreshLayout官方教程(下)响应刷新事件

    http://developer.android.com/training/swipe/respond-refresh-request.html This lesson shows you how t ...