删除以编程方式创建的部分 TreeView 节点(来自 XML)
Posted
技术标签:
【中文标题】删除以编程方式创建的部分 TreeView 节点(来自 XML)【英文标题】:Remove part of programmatically created TreeView Nodes (from an XML) 【发布时间】:2020-11-15 10:58:53 【问题描述】:我有读取预定义 XML 文件(我无法更改其内容)的代码,查找值标题并将其显示为树视图中的子节点。
这部分工作正常,但不幸的是,我必须使用的 XML 在这些标题中有不需要的文本。
目前的结果是: https://i.gyazo.com/3bc42cae37037030a8e18b96ce59da23.png
我现在需要删除每个名称开头的 中的内容。我知道
string.remove
等,但鉴于代码将这些作为本地变量处理,我不确定如何处理。
中的内容无法预测,长度可能会有所不同,我可以肯定的是,这些内容将始终位于开头。
我目前的代码:
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
BuildTree(treeView, XDocument.Load(@"C:\Program Files (x86)\Steam\steamapps\common\Mount & Blade II Bannerlord\Modules\SandBox\ModuleData\spkingdoms.xml"));
private void BuildTree(TreeView treeView, XDocument doc)
TreeViewItem treeNode = new TreeViewItem
//Should be Root
Header = "Kingdoms",
IsExpanded = true
;
treeView.Items.Add(treeNode);
BuildNodes(treeNode, doc.Root);
private void BuildNodes(TreeViewItem treeNode, XElement element)
foreach (XNode child in element.Nodes())
switch (child.NodeType)
case XmlNodeType.Element:
XElement childElement = child as XElement;
if (childElement.Attributes().Any(s => s.Name == "title"))
TreeViewItem childTreeNode = new TreeViewItem
//Get First attribute where it is equal to value
Header = childElement.Attributes().FirstOrDefault(s => s.Name == "title").Value,
//Automatically expand elements
IsExpanded = true
;
treeNode.Items.Add(childTreeNode);
BuildNodes(childTreeNode, childElement);
break;
case XmlNodeType.Text:
XText childText = child as XText;
treeNode.Items.Add(new TreeViewItem Header = childText.Value, );
break;
【问题讨论】:
【参考方案1】:如果文本在 .Value
中,那么您将其取出,可能是:
.Value.Split('').Last()
您需要对 System.Linq 的引用
如果 value 为 null,您可以在 Value
和 .
之间添加一个问号
【讨论】:
酷,不知道。Split 是一种价值谢谢。以上是关于删除以编程方式创建的部分 TreeView 节点(来自 XML)的主要内容,如果未能解决你的问题,请参考以下文章