유효성 검사 설정 XmlReader 개체 만들기
이번에는 XmlSchemaSet 개체로 유효성 검사를 할 수 있게 XmlReader 개체를 생성하는 방법을 살펴볼게요.
예제에서는 XmlSchemaSet 개체를 생성하여 이미 작성한 스키마 파일 "data.xsd"의 내용을 XmlSchemaSet에 추가하고 XmlReaderSettings 개체의 Schemas 속성에 설정합니다. 그리고 XmlReader 개체를 이용하여 데이터 소스에 유효성이 위배한 부분을 발견할 때 처리하기 위한 이벤트 핸들러를 추가합니다.
이와 같은 작업을 한 후에 XmlReaderSettings 개체를 전달하여 XmlReader 개체를 생성하면 이후에 읽기 작업 등에서 데이터 소스에 유효성이 위배한 부분을 발견하면 설정한 이벤트 핸들러가 동작합니다.
static void Main(string[] args) { XmlSchemaSet sc = new XmlSchemaSet(); sc.Add("urn:books-schema", "data.xsd");
XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.Schemas = sc; settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
XmlReader reader = XmlReader.Create("data.xml", settings); WirteConsole(reader); reader.Close(); } private static void ValidationCallBack(object sender, ValidationEventArgs e) { Console.WriteLine("유효성 위배: {0}", e.Message); } private static void WirteConsole(XmlReader reader) { XmlWriter xwriter = XmlWriter.Create(Console.Out); xwriter.WriteNode(reader, false); xwriter.Close(); Console.WriteLine(); } |
[소스] 유효성 검사를 설정한 XmlReader 개체 만들기 예제 코드
유효성 검사는 XmlSchemaSet 개체를 이용하는 방법 외에도 DTD를 사용하거나 래핑된 XmlReader 개체를 사용하는 방법 등이 있으니 MSDN을 참고하시기 바랍니다.
다음은 미리 작성한 스키마 파일 "data.xsd"와 데이터 소스로 사용할 "data.xml" 파일의 내용입니다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:books-schema" elementFormDefault="qualified" targetNamespace="urn:books-schema"> <xsd:element name="books" type="booksType"/> <xsd:complexType name="booksType"> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="book" type="bookType"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="bookType"> <xsd:sequence> <xsd:element name="title" type="xsd:string"/> <xsd:element name="price" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:schema> |
[문서] data.xsd 문서 내용
<?xml version="1.0" encoding="utf-8"?> <books xmlns="urn:books-schema"> <book> <title>XML.NET 과 ADO.NET</title> <price>2200.0</price> </book> </books> |
[문서] data.xml 문서 내용
[그림] 실행 화면
'프로그래밍 기술 > XML.NET' 카테고리의 다른 글
[XML.NET] 20. XmlSchema 클래스로 스키마 작성 및 판독 (0) | 2016.04.18 |
---|---|
[XML.NET] 19. XmlReader 클래스 ReadInnerXml, ReadOuterXml (0) | 2016.04.18 |
[XML.NET] 18.XmlReader 개체로 데이터 분석(Attribute 읽기) (0) | 2016.04.18 |
[XML.NET] 17. XmlReader 개체로 데이터 분석(요소 읽기) (0) | 2016.04.18 |
[XML.NET] 16. XmlReader 개체로 데이터 분석(노드 형식 알아내기) (0) | 2016.04.18 |
[XML.NET] 14. 외부 자원을 소스로 하는 XmlReader 개체 만들기 (0) | 2016.04.18 |
[XML.NET] 13. XmlReader 개체 만들기 예제 (0) | 2016.04.18 |
[XML.NET] 12. XmlReaderSettings 개요 (0) | 2016.04.18 |
[XML.NET] 12. XmlReader 개요 (0) | 2016.04.18 |
[XML.NET] 11. XmlWriter 개체로 XML 데이터 작성(Attribte 쓰기) (0) | 2016.04.18 |