작성날짜 : 2011-04-26 |
참고 서적 : About ADO.NET
CanResolveEntity 속성
CanResolveEntity 속성은 XmlReader가 엔터티를 구문 분석하고 확인할 수 있는지 여부를 나타내는 값을 보여 준다. 기본 문형은 다음과 같다.
public virtual bool CanresolveEntity { get; } |
XmlReader 개체가 엔터티를 구문 분석하고 확인할 수 있으면 true이고, 그렇지 않으면 false를 반환한다. CanResolveEntity 속성은 DTD 정보를 지원하지 않는 XmlReader를 구현하는 경우에는 항상 false를 반환하게 된다. CanResolveEntity가 false를 반환하는 경우 즉, XmlReader 개체가 엔터티를 구문분석하고 확인할 수 없는 경우에는 ResolveEntity를 호출하면 오류가 발생하게 된다. 그러므로 CanResolveEntity 속성은 DTD 정보를 지원하는 XmlReader를 구현하는 경우에 주로 사용하게 된다. 먼저 다음과 같이 내부 DTD를 포함하고 있는 XML 문서를 작성한다.
이 XML 문서는 앞 장에서 설명한 내부 DTD를 포함하고 있다. DTD는 앞 장에서 설명한 것처럼 XML 문서 내부와 외부 파일 형태로 선언될 수 있고 XML 문서의 구조에 대해 설명하고 있다. XML 문서의 구조를 설명하는 방법으로는 DTD와 XML 스키마 등이 있다. 위와 같은 XML 문서가 작성되었다면 다음과 같이 VS.NET을 이용하여 WebForm1.aspx 파일의 Page_Load 이벤트 핸들러를 작성한다.
protected void Page_Load(object sender, EventArgs e) { XmlValidatingReader xvReader = null; XmlTextReader xtReader = null; try { xtReader = new XmlTextReader("C:/xml/Book.xml"); xtReader.WhitespaceHandling = WhitespaceHandling.None; xvReader = new XmlValidatingReader(xtReader); xvReader.ValidationType = ValidationType.None; xvReader.EntityHandling = EntityHandling.ExpandCharEntities; // 루트 엘리먼트로 이동하기 xvReader.MoveToContent(); // title 시작 태그로 이동하기 xvReader.Read(); // title 엘리먼트 건너뛰기 xvReader.Skip(); // price 시작 태그 읽기 xvReader.ReadStartElement(); Response.Write("ResolveEnity메서드 실행<br>"); Response.Write("===================<br>"); if (xvReader.CanResolveEntity == true) { xvReader.ResolveEntity(); xvReader.Read(); Response.Write("▶NoteType : " + xvReader.NodeType); Response.Write(" ▶value : " + xvReader.Value); Response.Write("<br>"); xvReader.Read(); Response.Write("▶NoteType : " + xvReader.NodeType); Response.Write(" ▶value : " + xvReader.Name); } } finally { if (xvReader != null) { xvReader.Close(); } } } |
CanResolveEntity 속성이 True 값을 가질 때에만 출력이 되도록 처리를 하였다. 위의 코드를 실행하면 다음과 같은 결과를 볼 수 있다.
'Programming > .NET' 카테고리의 다른 글
[ADO.NET] XmlReader - Depth 속성 (0) | 2015.09.22 |
---|---|
[.NET] C#에서 XML문서에 새로운 NODE 추가 하기 (0) | 2015.09.22 |
[ADO.NET] XmlReader - BaseURI 속성 (0) | 2015.09.22 |
[ADO.NET] XmlReader - AttributeCount 속성 (0) | 2015.06.05 |
[ADO.NET] XmlReader 소개 (0) | 2015.06.05 |