質問:
foreach ループを使用して XML ノードの属性を TreeView に表示すると、属性が子ノードごとに表示されるため、重複が発生します。目標は、プロパティが 1 回だけ表示されるようにすることです。
例:
<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 は、一意のノードごとにプロパティを 1 回だけ表示する必要があります。たとえば、ID「aa」を持つ最初の Host 要素の属性は、その子 Address ノードで繰り返されるのではなく、1 回だけ表示される必要があります。
解決策:
次のコードは問題を解決します:
<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
メソッドのループに追加します。 この改訂された回答では、イメージが維持され、コードの解決策がより簡潔かつ明確に説明されています。これはすでに問題に対する正しい解決策であるため、コード自体は変更されていません。
以上がXML の解析時にツリービューでの重複した属性の表示を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。