Question :
Lors de l'utilisation d'une boucle foreach pour afficher les attributs d'un nœud XML dans un TreeView, les attributs sont affichés pour chaque nœud enfant, ce qui entraîne une duplication. L'objectif est de garantir que la propriété n'est affichée qu'une seule fois.
Exemple :
<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>
Comportement attendu :
TreeView ne doit afficher les propriétés qu'une seule fois pour chaque nœud unique. Par exemple, les attributs du premier élément Host avec l'ID « aa » doivent être affichés une seule fois, plutôt que répétés dans ses nœuds d'adresse enfants.
Solution :
Le code suivant résout le problème :
<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>
Autres notes :
DisplayTreeView
. Cette réponse révisée conserve l'image et fournit une explication plus concise et plus claire de la solution du code. Le code lui-même est inchangé, car il s'agissait déjà d'une solution correcte au problème.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!