HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


C# 2003の開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > C# 2003 Tips > コントロール > TreeView Tips メニュー

11.XMLファイルを表示する

UPDATE:2006/05/02 

<< 前のTips  次のTips >>

 

 XMLファイルをツリービューに表示したかったのでMakeTreeという関数を作成しました。この関数を使用すると、指定したXMLファイルの構造そのままをツリービューに表示することができます。

 
サンプル
private void button1_Click(object sender, EventArgs e)
{

    OpenFileDialog dlgOpen = new OpenFileDialog();

    //ファイルを開くダイアログを表示する
    dlgOpen.Filter = "XMLファイル(*.xml)|*.xml";
    if (dlgOpen.ShowDialog() == DialogResult.OK)
    {
        //XMLファイルを読み込む
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(dlgOpen.FileName);

        XmlElement xmlRoot = xmlDoc.DocumentElement;
        TreeNode trvRoot = new TreeNode();

        //XMLをツリーノードに変換する
        treeView1.Nodes.Clear();
        MakeTree(xmlRoot, ref trvRoot);

        //XMLをツリービューに変換したノードを追加する
        treeView1.Nodes.Add(trvRoot);
    }

}

/// <summary>
/// XMLをツリーノードに変換する
/// </summary>
/// <param name="xmlParent">変化するXMLデータ</param>
/// <param name="trvParent">変換されたツリーノード</param>
private void MakeTree(System.Xml.XmlElement xmlParent, ref TreeNode trvParent)
{
    if (xmlParent.HasChildNodes)
    {
        for (int i = 0; i < xmlParent.ChildNodes.Count; i++)
        {
            if (xmlParent.ChildNodes[i].GetType().ToString().IndexOf("XmlElement") >= 0)
            {
                XmlElement xmlChild = (XmlElement)xmlParent.ChildNodes[i];
                TreeNode trvChild = new TreeNode();

                trvChild.Text = xmlChild.Name;
                // 子ノードがまだあるか?
                if (xmlChild.HasChildNodes)
                    MakeTree(xmlChild, ref trvChild);
                trvParent.Nodes.Add(trvChild);
            }
            else if (xmlParent.ChildNodes[i].GetType().ToString().IndexOf("XmlText") >= 0)
            {
                TreeNode trvChild = new TreeNode();
                trvChild.Text = xmlParent.ChildNodes[i].InnerText;
                trvParent.Nodes.Add(trvChild);
            }
        }
    }
    //親ノードの設定
    trvParent.Text = xmlParent.Name;
}
 

<< 前のTips  次のTips >>