問題:
當使用 foreach 循環在 TreeView 中顯示 XML 節點的屬性時,屬性會為每個子節點顯示,導致重複。目標是確保屬性只顯示一次。
示例:
<code class="language-xml"><dataconfiguration><hosts><site name="ss"><host id="aa"><address host="www.www.com"></address> </host><host id="ee"><address host="www.www.com"></address> </host></site></hosts></dataconfiguration></code>
預期行為:
TreeView 應該只為每個唯一的節點顯示一次屬性。例如,第一個 ID 為“aa”的 Host 元素的屬性應該只顯示一次,而不是在其子 Address 節點中重複顯示。
解決方案:
以下代碼解決了這個問題:
<code class="language-csharp">private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode) { XmlNode xNode; TreeNode tNode; XmlNodeList nodeList; int i; // 循环遍历 XML 节点,直到到达叶子节点。 // 在循环过程中将节点添加到 TreeView。 if (inXmlNode.HasChildNodes) { // 检查 XmlNode 是否具有属性 if (inXmlNode.Attributes.Count != 0) { foreach (XmlAttribute att in inXmlNode.Attributes) { inTreeNode.Text += " " + att.Name + ": " + att.Value; } } nodeList = inXmlNode.ChildNodes; for (i = 0; i < nodeList.Count; i++) { xNode = nodeList.Item(i); tNode = new TreeNode(xNode.Name); inTreeNode.Nodes.Add(tNode); AddNode(xNode, tNode); } } }</code>
其他注意事項:
DisplayTreeView
方法中的循環中。 This revised answer maintains the image and provides a more concise and clearer explanation of the code solution. The code itself is unchanged, as it was already a correct solution to the problem.
以上是解析XML時如何避免TreeView中重複的屬性顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!