Jak naplnit ovládací prvek TreeView s daty XML v aplikaci Visual C# 2005 nebo Visual C# .NET

Microsoft Visual Basic .NET verzi tohoto článku naleznete v 308063 .

Souhrn

Tento krok za krokem článek popisuje, jak naplnit ovládací prvek TreeView pomocí jazyka XML (Extensible Markup) dat v aplikaci Microsoft Visual C# 2005 nebo Microsoft Visual C# .NET. Protože XML a ovládací prvek TreeView reprezentaci dat v hierarchickém formátu, ovládací prvek TreeView je přirozený voleb k zobrazení dat XML.

Ovládací prvek TreeView má kolekce uzlů kořenový objekt TreeNode objekty. Každý objekt TreeNode zase má vlastní kolekce uzlů obsahující více než jeden podřízený objekt TreeNode.

Poznámka: V tomto příkladu Model DOM (Document Object) analýze tříd .NET k procesu XML.

Další informace o návrhu XML v rozhraní.NET Framework naleznete v části "odkazy".

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:
  • Microsoft Windows XP, Microsoft Windows 2000 nebo Microsoft Windows NT 4.0 Service Pack 6a
  • Microsoft Data Access Components 2.6 (MDAC) nebo novější
  • Microsoft Visual Studio 2005 nebo Microsoft Visual Studio .NET
Tento článek předpokládá, že jste obeznámeni s následující témata:
  • Syntaxe pro Visual C# .NET nebo Visual C# 2005 syntaxe
  • XML a související normy
  • Model Windows Forms

Kroky k vytvoření a naplnění ovládacího prvku TreeView s XML

  1. Vložte následující ukázkový kód XML do nového textového souboru s názvem "Sample.xml". Tento soubor je ukázková data XML pro tento příklad:
    <?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. Vytvořte novou aplikaci systému Windows v Visual C# 2005 nebo Visual C# .NET. Ve výchozím nastavení je do aplikace přidány Form1.
  3. Přetáhněte nové ovládací prvky TreeView, tlačítka, Popiseka textové pole Form1.
  4. Přidáte následující ukázkový kód na konci oddílu pomocí směrnic v Form1.cs:
    using System.Xml;
  5. Vložte následující ukázkový kód do události 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. Vložte následující kód do události 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. Vložte následující kód vzorku po události 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. Stisknutím klávesy F5 sestavit a spustit aplikaci. Zkontrolujte správnost cesty souboru XML a potom klepněte na tlačítko. XML data se mají objevit v prvku TreeView .
Poznámka: Zdroj může být soubor, adresa URL nebo proud XML. Naleznete v části "odkazy" informace o použití třídy XmlDocument načíst XML data z různých zdrojů.

Kroky k naplnění ovládacího prvku TreeView s požadovaná data

Předchozí ukázka kódu mapuje stromu data XML přímo do
TreeView a zobrazí všechna data. Alternativně můžete přidat další informace k zobrazení nebo přeskočit nežádoucí data.

V mnoha případech můžete zobrazit pouze část dat XML. Část dat, které chcete zobrazit může být dynamicky vyrobeno, výsledek transformace Extensible Stylesheet Language (XSL) nebo výsledek dotazu XPath. Tato část popisuje, jak vytvořit nový dokument XML s pouze požadované uzly a potom přidejte nový dokument do ovládacího prvku TreeView .

Například následující kroky načíst pouze podřízené prvky originial dat XML pomocí dotazu XPath a pak doplnit tento seznam jako nový uzel prvku TreeView.
  1. Vložit následující kód těsně před řádek TreeView1.ExpandAll v předchozí ukázce:
                // 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. Sestavte a spusťte aplikaci. Tato aplikace má nový kořenový uzel "děti" zobrazit v TreeView kromě původní data.

ODKAZY

Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

313651 cestovní mapy XML v rozhraní.NET Framework

Další informace naleznete na následujících webech Microsoft Developer Network (MSDN):
Vlastnosti

ID článku: 317597 - Poslední kontrola: 20. 1. 2017 - Revize: 1

Váš názor