将分层xml绑定到treeview
我有一个标准的.NET 3.5 winforms项目。 在它上面,它有一个树视图。 我已经使用XmlSerializer和相关类将List实例序列化为XML,以获得分层XML文件。
现在,我需要将此XML文件绑定到树视图以显示其所有节点/元素(父节点,子节点等)。
有没有方便这样做(LINQ与否),而不必解析XML等?
谢谢
不需要解析XML以将其内容绑定到TreeView
的解决方案不存在 (如果它在内部退出, 当然 ,解析XML)。
无论如何,您可以使用LINQ to XML自己实现:
private void Form1_Load(object sender, EventArgs e) { var doc = XDocument.Load("data.xml"); var root = doc.Root; var x = GetNodes(new TreeNode(root.Name.LocalName), root).ToArray(); treeView1.Nodes.AddRange(x); } private IEnumerable GetNodes(TreeNode node, XElement element) { return element.HasElements ? node.AddRange(from item in element.Elements() let tree = new TreeNode(item.Name.LocalName) from newNode in GetNodes(tree, item) select newNode) : new[] { node }; }
在TreeNodeEx
:
public static class TreeNodeEx { public static IEnumerable AddRange(this TreeNode collection, IEnumerable nodes) { var items = nodes.ToArray(); collection.Nodes.AddRange(items); return new[] { collection }; } }