how can i store the attributes of an xml node in an array of strings的副本,您应该修改原始问题。
我是新手,所以我正在重新提出先问的问题。我有一个项目,我的xmldoc是在XmlDocument类的帮助下创建的,然后在xmldoc.Load()方法的帮助下加载。在addnodes()方法的帮助下,我将节点添加到树中,因此它显示在winform中。现在当我点击树视图中的xmlnode时,它的属性会显示在列表框中。现在我已经将整个逻辑划分为UI和后端部分。现在我想要的是我的后端类包含显示单击的xml节点的属性(名称和值)的方法,这些方法存储在数组中,并作为字符串返回到treev_AfterSelect事件中的前端类。我该怎么办?我需要存储节点的属性我点击字符串数组中的winform并显示在列表框中。如何做?
答案 0 :(得分:1)
这可能会使用更多细节,但我会冒险猜测:
您在TreeNode的Tag属性中保存XmlElement,对吗?然后,您希望从AfterSelect事件的Tag中获取该XmlElement,并将其传递给将返回IEnumerable属性(和值?)的方法。 这很简单,我将把细节留作“练习”,但只需循环遍历element.Attributes,并将每个属性名称和值添加到列表中。如果您愿意,可将它们格式化为“name = value”。然后,只需返回列表。
答案 1 :(得分:1)
我通过痛苦的经历发现使用Tag
属性构建了脆弱的解决方案。将TreeNode
映射到XmlElement
的类型安全方法是创建Dictionary<TreeNode, XmlElement>
。首先,它比使用Tag
属性更难,但它使关联非常明确。 (我昨天刚刚修复了一个代码保存密钥到Tag
属性中的对象的错误,而另一个代码期望Tag
包含对象本身。)
因此,AfterSelect事件中的代码如下所示:
TreeNode n = sender as TreeNode;
if (n != null)
{
string[] result = TreeNodeMap[n].Attributes
.Select(x => x.Name + "=" + x.Value)
.ToArray();
}