Visual C# 2005 또는 Visual C# .NET에서 XML 데이터로 TreeView 컨트롤을 채우는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 317597 - 이 문서가 적용되는 제품 보기.
이 문서의 Microsoft Visual Basic .NET 버전에 대한 내용은 308063을 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Microsoft Visual C# 2005 또는 Microsoft Visual C# .NET에서 XML(Extensible Markup Language) 데이터를 사용하여 TreeView 컨트롤을 채우는 방법을 단계별로 설명합니다. XML 및 TreeView 컨트롤 모두 데이터를 계층적 형식으로 표시하므로 TreeView 컨트롤이 XML 데이터를 표시하는 것은 당연합니다.

TreeView 컨트롤에는 루트 TreeNode 개체가 있는 Nodes 컬렉션이 있습니다. 각 TreeNode에는 차례로 두 개 이상의 하위 TreeNode를 보유하는 고유한 Nodes 컬렉션이 있습니다.

참고 이 예제에서는 .NET의 DOM(Document Object Model) 구문 분석 클래스를 사용하여 XML을 처리합니다.

.NET Framework의 XML 디자인에 대한 자세한 내용은 "참조" 절을 참조하십시오.

요구 사항

다음은 권장되는 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩 목록입니다.
  • Microsoft Windows XP, Microsoft Windows 2000 또는 Microsoft Windows NT 4.0 서비스 팩 6a
  • Microsoft Data Access Components(MDAC) 2.6 이상
  • Microsoft Visual Studio 2005 또는 Microsoft Visual Studio .NET
이 문서에서는 사용자가 다음 내용을 잘 알고 있는 것으로 가정합니다.
  • Visual C# 2005 구문 또는 Visual C# .NET 구문
  • XML 및 관련 표준
  • Windows Forms

XML을 사용하여 TreeView 컨트롤을 만들고 채우는 단계

  1. "Sample.xml"이라는 새 텍스트 파일을 만들고 다음 XML 예제 코드를 붙여 넣습니다. 이 파일은 이 예제를 위한 예제 XML 데이터입니다.
    <?xml version="1.0"?>
    <family>
    <parent>id="grandfather"
        <parent>id="father"
             <parent>id="brother"
                <child>id="niece"
                </child>
             </parent>
             <parent>id="me"
                <child>id="son"</child>
                <child>id="daughter"</child>
             </parent>
             <child>id="sister"</child>
         </parent>
         <parent>id="uncle"
             <parent>id="cousin sister"
                <child>id="second cousin"</child>
             </parent>
             <child>id="cousin brother"</child>
         </parent>
    </parent>
    </family>
  2. Visual C# 2005 또는 Visual C# .NET에서 Windows 기반 응용 프로그램을 새로 만듭니다. 기본적으로 Form1이 응용 프로그램에 추가됩니다.
  3. TreeView, Button, LabelTextBox 컨트롤을 Form1로 끕니다.
  4. Form1.cs의 using 지시문 구역 끝에 다음 예제 코드를 추가합니다.
    using System.Xml;
    					
  5. Form1_Load 이벤트에 다음 예제 코드를 붙여 넣습니다.
          
             // Initialize the controls and the form.
             label1.Text = "File Path";
             label1.SetBounds(8, 8, 50, 20);
             textBox1.Text = Application.StartupPath + "\\Sample.xml";
             textBox1.SetBounds(64, 8, 256, 20);
             button1.Text = "Populate the TreeView with XML";
             button1.SetBounds(8, 40, 200, 20);
             this.Text = "TreeView control from XML";
             this.Width = 336;
             this.Height = 368;
             treeView1.SetBounds(8, 72, 312, 264);
    					
  6. Button1_Click 이벤트에 다음 코드를 붙여 넣습니다.
             try 
             {
                // SECTION 1. Create a DOM Document and load the XML data into it.
                XmlDocument dom = new XmlDocument();
                dom.Load(textBox1.Text);
    
                // SECTION 2. Initialize the TreeView control.
                treeView1.Nodes.Clear();
                treeView1.Nodes.Add(new TreeNode(dom.DocumentElement.Name));
                TreeNode tNode = new TreeNode();
                tNode = treeView1.Nodes[0];
    
                // SECTION 3. Populate the TreeView with the DOM nodes.
                AddNode(dom.DocumentElement, tNode);
                treeView1.ExpandAll();
             }
             catch(XmlException xmlEx)
             {
                MessageBox.Show(xmlEx.Message);
             }
             catch(Exception ex)
             {
                MessageBox.Show(ex.Message);
             }
    					
  7. Button1_Click 이벤트 뒤에 다음 예제 코드를 붙여 넣습니다.
          private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
          {
             XmlNode xNode;
             TreeNode tNode;
             XmlNodeList nodeList;
             int i;
    
             // Loop through the XML nodes until the leaf is reached.
             // Add the nodes to the TreeView during the looping process.
             if (inXmlNode.HasChildNodes)
             {
                nodeList = inXmlNode.ChildNodes;
                for(i = 0; i<=nodeList.Count - 1; i++)
                {
                   xNode = inXmlNode.ChildNodes[i];
                   inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
                   tNode = inTreeNode.Nodes[i];
                   AddNode(xNode, tNode);
                }
             }
             else
             {
                // Here you need to pull the data from the XmlNode based on the
                // type of node, whether attribute values are required, and so forth.
                inTreeNode.Text = (inXmlNode.OuterXml).Trim();
             }
          }                  
       }
    }
    					
  8. F5 키를 눌러 응용 프로그램을 빌드하고 실행합니다. XML 파일 경로가 올바른지 확인하고 button을 누릅니다. XML 데이터가 TreeView 컨트롤에 나타납니다.
참고 리소스는 파일, URL 또는 XML 스트림일 수 있습니다. XmlDocument 클래스를 사용하여 다른 리소스에서 XML 데이터를 로드하는 데 대한 내용은 "참조" 절을 참조하십시오.

필요한 데이터로 TreeView 컨트롤을 채우는 단계

앞의 코드 예제에서는 XML 트리 데이터를 TreeView에 직접 매핑하고 데이터를 모두 표시합니다. 표시된 데이터에 자세한 정보를 추가하거나 원하지 않는 데이터를 건너뛸 수도 있습니다.

대부분의 경우 XML 데이터의 일부만 표시할 수 있습니다. 표시할 데이터의 부분은 XSL(Extensible Stylesheet Language) 변환의 결과이거나 XPath 쿼리 결과로 동적으로 생성될 수 있습니다. 이 절에서는 필수 노드가 하나만 있는 새 XML 문서를 빌드한 다음 새 문서를 TreeView 컨트롤에 추가하는 방법을 설명합니다.

예를 들어, 다음 단계에서 XPath 쿼리를 사용하여 원본 XML 데이터의 하위 요소만 검색한 다음 해당 목록을 새 노드로 TreeView에 추가합니다.
  1. 앞의 예제에서 TreeView 줄 바로 앞에 다음 코드를 붙여 넣습니다.
                // SECTION 4. Create a new TreeView Node with only the child nodes.
                XmlNodeList nodelist = dom.SelectNodes("//child");
                XmlDocument cDom = new XmlDocument();
                cDom.LoadXml("<children></children>");
                foreach(XmlNode node in nodelist)
                {
                   XmlNode newElem = cDom.CreateNode(XmlNodeType.Element, node.Name, node.LocalName);
                   newElem.InnerText = node.InnerText;
                   cDom.DocumentElement.AppendChild(newElem);
                }
             
                treeView1.Nodes.Add(new TreeNode(cDom.DocumentElement.Name));
                tNode = treeView1.Nodes[1];
                AddNode(cDom.DocumentElement, tNode);
    					
  2. 응용 프로그램을 빌드하고 실행합니다. 이 응용 프로그램은 원본 데이터와 TreeView의 새 "하위" 루트 노드를 나타내야 합니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
313651 INFO: .NET Framework의 XML에 대한 설명
자세한 내용은 다음 MSDN(Microsoft Developer Network) 웹 사이트를 참조하십시오.
http://msdn2.microsoft.com/en-us/library/system.xml(vs.71).aspx(영문)

http://msdn2.microsoft.com/en-us/xml/default.aspx(영문)




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 317597 - 마지막 검토: 2007년 12월 26일 수요일 - 수정: 4.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
키워드:?
kbbcl kbctrl kbhowtomaster kbwindowsforms KB317597

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com