블로그 이미지
Kanais
Researcher & Developer 퍼즐을 완성하려면 퍼즐 조각들을 하나 둘씩 맞춰나가야 한다. 인생의 퍼즐 조각들을 하나 둘씩 맞춰나가다 보면 인생이란 퍼즐도 완성되는 날이 오려나...?

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

2015. 9. 22. 10:16 Programming/.NET

작성날짜 : 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, nullXmlSpace.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 값도 출력하여 보여주는 예제이다위의 코드를 실행하면 다음과 같은 결과를 볼 수 있다.

 

posted by Kanais