使用 (LINQ to XML) 来自 XML 的 C# 动态 TreeView 填充
C# Dynamic TreeView population from XML using (LINQ to XML)
我正在尝试使用 XDocument(LINQ to XML)从 XML 文件在 C# 中填充 TreeView 我尝试使用此 link.
当我无法理解 link 中的代码如何工作时,我只是将其复制到我的项目并更改了必要的变量,但它 returns 在 TreeView
上出现奇怪的结果
我使用的 XML 文件是用来制作文件夹的,但是文件夹很容易创建,因为您可以很容易地从 XML 文档中提取路径。
文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<dir name="After">
<dir name="Site Documents">
<dir name="02. External">
<dir name="1. Mechanical">
<dir name="01. Submittals">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="02. Drawings">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="03. MIR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="04. IR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="05. RFI">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="06. DFC">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="07. PVN">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
</dir>
<dir name="2. Electrical">
<dir name="01. Submittals">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="02. Drawings">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="03. MIR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="04. IR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="05. RFI">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="06. DFC">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="07. PVN">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
</dir>
</dir>
<dir name="03. Internal">
<dir name="01. PR">
<dir name="1. MECH">
</dir>
<dir name="2. ELEC" />
</dir>
<dir name="02. PO">
</dir>
<dir name="03. SRF">
</dir>
<dir name="04. RMR" />
</dir>
</dir>
</dir>
树视图中的结果显示为:
将 Windows 表单与 XML Linq 和递归结合使用:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
const string FILENAME = @"c:\temp\test.xml";
public Form1()
{
InitializeComponent();
XDocument doc = XDocument.Load(FILENAME);
XElement dir = doc.Root;
TreeNode node = new TreeNode((string)dir.Attribute("name"));
treeView1.Nodes.Add(node);
GetTree(dir, node);
treeView1.ExpandAll();
}
public static void GetTree(XElement dir, TreeNode node)
{
foreach (XElement child in dir.Elements("dir"))
{
TreeNode childNode = new TreeNode((string)child.Attribute("name"));
node.Nodes.Add(childNode);
GetTree(child, childNode);
}
}
}
}
我正在尝试使用 XDocument(LINQ to XML)从 XML 文件在 C# 中填充 TreeView 我尝试使用此 link.
当我无法理解 link 中的代码如何工作时,我只是将其复制到我的项目并更改了必要的变量,但它 returns 在 TreeView
上出现奇怪的结果我使用的 XML 文件是用来制作文件夹的,但是文件夹很容易创建,因为您可以很容易地从 XML 文档中提取路径。
文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<dir name="After">
<dir name="Site Documents">
<dir name="02. External">
<dir name="1. Mechanical">
<dir name="01. Submittals">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="02. Drawings">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="03. MIR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="04. IR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="05. RFI">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="06. DFC">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="07. PVN">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
</dir>
<dir name="2. Electrical">
<dir name="01. Submittals">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="02. Drawings">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="03. MIR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="04. IR">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="05. RFI">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="06. DFC">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
<dir name="07. PVN">
<dir name="1. Sent" />
<dir name="2. Received" />
</dir>
</dir>
</dir>
<dir name="03. Internal">
<dir name="01. PR">
<dir name="1. MECH">
</dir>
<dir name="2. ELEC" />
</dir>
<dir name="02. PO">
</dir>
<dir name="03. SRF">
</dir>
<dir name="04. RMR" />
</dir>
</dir>
</dir>
树视图中的结果显示为:
将 Windows 表单与 XML Linq 和递归结合使用:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
const string FILENAME = @"c:\temp\test.xml";
public Form1()
{
InitializeComponent();
XDocument doc = XDocument.Load(FILENAME);
XElement dir = doc.Root;
TreeNode node = new TreeNode((string)dir.Attribute("name"));
treeView1.Nodes.Add(node);
GetTree(dir, node);
treeView1.ExpandAll();
}
public static void GetTree(XElement dir, TreeNode node)
{
foreach (XElement child in dir.Elements("dir"))
{
TreeNode childNode = new TreeNode((string)child.Attribute("name"));
node.Nodes.Add(childNode);
GetTree(child, childNode);
}
}
}
}