我使用XmlReader来处理,因为觉得XmlReader简单点。
我自己做了个例子来说明,例子里的XML不是很复杂,没有子节点的。
XML 文件(a.xml):
Html代码
- <?xml version="1.0" encoding="utf-8" ?>
- <PROFILE>
- <PROFILEID>0001</PROFILEID>
- <DESCIPTION>我的内容</DESCIPTION>
- <URL><![CDATA[http://www./app/DidYouWin/WinningNumbers/Lotto649Print.asp?YEAR=2000&MONTH=6&DRAW_DATE=&GAMEID=1]]></URL>
- <NUMBERS>6</NUMBERS>
- <BONUS>true</BONUS>
- </PROFILE>
XSD文件(a.xsd):
Html代码
- <?xml version="1.0" encoding="utf-16"?>
- <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www./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#文件
Csharp代码
- 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();
|