작성날짜 : 2011-04-28 |
참고 서적 : About ADO.NET
Depth 속성
Depth 속성은 현재 노드의 수준(Level) 값을 가져온다. 기본 문형은 다음과 같다.
public abstract int Depth { get; } |
Depth의 개념에 대해 이해하기 위해 다음과 같은 XML 문서를 통해 각각의 엘리먼트에 해당하는 Depth 값을 알아보자.
<?xml version='1.0' encoding="euc-kr"?> <books> <book> <title>어린 왕자</title> </book> </books> |
위와 같은 xml문서의 구조에서 각 엘리먼트의 Depth 값은 다음과 같다.
엘리먼트 | Depth 값 |
<xml> | 0 |
<books> | 1 |
<book> | 2 |
<title> | 3 |
다음 코드를 통해서 xml 문서에서 각 엘리먼트의 Depth 값을 출력하는 예제를 살펴보도록 하자. 이번에는 위의 예제와는 달리 XML 문서를 사용하지 않고 XML Frag를 이용해서 결과를 확인해 본다. XML Fragment는 온전한 XML 문서를 의미하지 않는다. XML 문서의 일부분을 의미한다. 다음 예제는 XMl Fragment에서 각 항목의 Depth와 Line Number, Line Position을 출력하는 예제이다.
protected void Page_Load(object sender, EventArgs e) { // XML Frag 만들기 // ================================== string xmlFrag = @"<books> <book> <title>어린 왕자</title> <price>5000원</price> </book> </books>"; // ================================== NameTable nTable = new NameTable(); XmlNamespaceManager nsManager = new XmlNamespaceManager(nTable); XmlParserContext context = new XmlParserContext(null, nsManager, null, XmlSpace.None); XmlTextReader xtReader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context); while (xtReader.Read()) { switch (xtReader.NodeType) { case XmlNodeType.Element: Response.Write("==========================<br>"); Response.Write("Depth : " + xtReader.Depth); Response.Write("<br>"); Response.Write("LineNumber : " + xtReader.LineNumber); Response.Write("<br>"); Response.Write("LinePosition : " + xtReader.LinePosition); Response.Write("<br>"); Response.Write("Name : " + xtReader.Name); Response.Write("<br>"); break; case XmlNodeType.Text: Response.Write("Depth : " + xtReader.Depth); Response.Write("<br>"); Response.Write("LineNumber : " + xtReader.LineNumber); Response.Write("<br>"); Response.Write("LinePosition : " + xtReader.LinePosition); Response.Write("<br>"); Response.Write("Value : " + xtReader.Value); Response.Write("<br>"); break; case XmlNodeType.EndElement: Response.Write("Depth : " + xtReader.Depth); Response.Write("<br>"); Response.Write("LineNumber : " + xtReader.LineNumber); Response.Write("<br>"); Response.Write("LinePosition : " + xtReader.LinePosition); Response.Write("<br>"); Response.Write("Value : " + xtReader.Name); Response.Write("<br>"); break; } } xtReader.Close(); } |
위의 코드는 XmlNode 형식에 따라 Depth 갑 뿐만 아니라 LineNumber, LinePosition 값도 출력하여 보여주는 예제이다. 위의 코드를 실행하면 다음과 같은 결과를 볼 수 있다.
'Programming > .NET' 카테고리의 다른 글
[ADO.NET] XmlReader - CanResolveEntity 속성 (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 |