【问题标题】:Display XML in tree view在树视图中显示 XML
【发布时间】:2018-09-21 04:04:13
【问题描述】:

我有以下 XML 结构

<?xml version="1.0" encoding="utf-8"?>
<rootnode>
  <Level 1>
    <Level 2>
      <Level 3>
      </Level 3>
    </Level 2>
    <Level 2>
      <Level 3>
      </Level 3>
    </Level 2>
  </Level 1>
  <Level 1>
    <Level 2>
      <Level 3>
      </Level 3>
    </Level 2>
  </Level 1>
</rootnode>

我想在树视图中显示这个 Xml 结构, 最好将 XDocument 用于此。

有人可以帮我吗?

【问题讨论】:

  • "只有级别 1、2、3 的名称",但您的样本只有级别 5 的名称。让它更清楚。包括你想要的名字和你不想要的名字,指定预期的输出。
  • 我想要名字 Level1 , Level2 , Level3 这应该是结果
  • 使用更清晰的规范和示例编辑问题。
  • 我应该编辑什么?我想要一个带有字符串的数组列表,在这个例子中它应该看起来像 = Level 1,Level2,Level3,Level 1,Level2,Level3,Level 1,Level2,Level3 ....
  • 首先修复 XML(&lt;Level 1&gt; 无效)。您的打开/关闭标签不匹配,因此名称与实际级别不对应。然后列出实际结果,并清楚可能的变化。

标签: c# xml select uwp tree


【解决方案1】:

尝试递归算法:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;

namespace WindowsFormsApplication15
{
    public partial class Form1 : Form
    {
        const int MAX_LEVEL = 3;
        const string FILENAME = @"c:\temp\test.xml";
        public Form1()
        {
            InitializeComponent();

            XDocument doc = XDocument.Load(FILENAME);
            XElement root = doc.Root;

            TreeNode newNode = new TreeNode();
            newNode.Text = root.Name.LocalName;
            treeView1.Nodes.Add(newNode);
            int level = 1;
            AddRecursive(root, newNode, level);

            treeView1.ExpandAll();
        }
        public void AddRecursive(XElement element, TreeNode parent, int level)
        {
            foreach (XElement child in element.Elements())
            {
                TreeNode newNode = new TreeNode();
                newNode.Text = child.Name.LocalName;
                parent.Nodes.Add(newNode);
                if (level < MAX_LEVEL)
                {
                    AddRecursive(child, newNode, level + 1);
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-03
    • 2022-06-10
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多