C#使用XSD来验证XML。

我使用XmlReader来处理,因为觉得XmlReader简单点。

 

我自己做了个例子来说明,例子里的XML不是很复杂,没有子节点的。

XML 文件(a.xml):

<?xml version="1.0" encoding="utf-8" ?>
<PROFILE>
<PROFILEID>0001</PROFILEID>
<DESCIPTION>我的内容</DESCIPTION>
<URL><![CDATA[http://www.bclc.com/app/DidYouWin/WinningNumbers/Lotto649Print.asp?YEAR=2000&MONTH=6&DRAW_DATE=&GAMEID=1]]></URL>
<NUMBERS>6</NUMBERS>
<BONUS>true</BONUS>
</PROFILE>

XSD文件(a.xsd):

<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="PROFILE">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PROFILEID" type="xsd:int" />
<xsd:element name="DESCIPTION" type="xsd:string" />
<xsd:element name="URL" type="xsd:string" />
<xsd:element name="NUMBERS" type="xsd:int" />
<xsd:element name="BONUS" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

 

C#文件

XmlReaderSettings st = new XmlReaderSettings();
st.ValidationType = ValidationType.Schema;
st.Schemas.Add(null, @"a.xsd");

//设置验证xml出错时的事件。
st.ValidationEventHandler += (obj, e)=>{
//这里加上你的信息处理。
};

XmlReader xr = XmlReader.Create(@"a.xml", st);
while (xr.Read()) {
if (xr.IsStartElement()){
xr.Read();
}
}
xr.Close();


 

 

posted @ 2012-01-31 11:02  龙行星宇  阅读(589)  评论(0编辑  收藏  举报