如何在xml中显示所有属性?

Jiale Xue - MSFT 46,466 信誉分 Microsoft 供应商
2024-02-29T07:59:30.1566667+00:00

我想用我的代码在树视图中显示所有属性。

如何开发此代码?谢谢!

XDocument document;
public void button1_Click(object sender, EventArgs e)
{
    document = XDocument.Load("test.xml");
    AddNodes(document.Root, treeView1.Nodes);

    treeView1.ExpandAll();
}

public void AddNodes(XElement element, TreeNodeCollection parent)
{
    var count = element.Elements().Count();

    if (count == 0)
    {
        var node = parent.Add(element.Value);
        node.Tag = element;
    }
    else
    {
        var node = parent.Add(element.Name.ToString());
        node.Tag = element;

        foreach (var child in element.Elements())
        {
            AddNodes(child, node.Nodes);
        }
    }
}

Note:此问题总结整理于:How to show all attributes in xml?

Windows 窗体
Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
113 个问题
C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 48,571 信誉分 Microsoft 供应商
    2024-02-29T08:13:03.49+00:00

    你好,你可以尝试以下代码来显示树视图中的所有属性。

    
    public void AddNodes(XElement element, TreeNodeCollection parent)  
        {  
            var count = element.Elements().Count();  
            if (count == 0)  
            {  
                //var node = parent.Add(element.Name.ToString());  
                //node.Tag = element;  
                string attbriutename = "";  
                if (element.HasAttributes)  
                {  
                  
                    attbriutename = element.Name.ToString();  
                    foreach (XAttribute att in element.Attributes())  
                    {  
                        attbriutename += " " + att.ToString();  
                    }  
                }  
                else  
                {  
                    attbriutename = element.Name.ToString();  
                }  
                var node = parent.Add(attbriutename);  
                node.Nodes.Add(element.Value);  
            }  
            else  
            {  
                string attbriutename = "";  
                if(element.HasAttributes)  
                {  
                    attbriutename = element.Name.ToString();  
                    foreach (var item in element.Attributes())  
                    {  
                        attbriutename += " "+item.ToString();  
                    }  
                }  
                else  
                {  
                    attbriutename = element.Name.ToString();  
                }  
                var node = parent.Add(attbriutename);  
                //node.Tag = element;  
                foreach (var child in element.Elements())  
                {  
                    AddNodes(child, node.Nodes);  
                  
                }  
    
            }  
        }
    
    

    xml 和 treeview 中的结果:

    205630-image.png


    如果答案是正确的解决方案,请单击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。