Maison > développement back-end > C++ > Comment éviter l'affichage d'attributs en double dans une arborescence lors de l'analyse XML ?

Comment éviter l'affichage d'attributs en double dans une arborescence lors de l'analyse XML ?

Patricia Arquette
Libérer: 2025-01-27 12:01:11
original
932 Les gens l'ont consulté

How to Avoid Duplicate Attribute Display in a TreeView When Parsing XML?

Afficher les attributs XML dans TreeView pour éviter la duplication

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>
Copier après la connexion

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>
Copier après la connexion
  • Avant de parcourir les nœuds enfants, le code vérifie si l'attribut existe sur le nœud actuel. Si des attributs sont présents, ils ne sont ajoutés au texte du nœud qu'une seule fois.
  • Effectuez ensuite une boucle qui traverse les nœuds enfants et ajoute chaque nœud enfant au TreeView.

Autres notes :

  • Si des attributs d'espace de noms sont présents, vous devrez peut-être les gérer différemment.
  • Si vous devez afficher la déclaration XML dans le TreeView, ajoutez-la à la boucle dans la méthode 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal