Heim >Backend-Entwicklung >C++ >Wie vermeiden Sie die doppelte Attributanzeige in einer Baumansicht beim Parsen von XML?

Wie vermeiden Sie die doppelte Attributanzeige in einer Baumansicht beim Parsen von XML?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-27 12:01:11995Durchsuche

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

Zeigen Sie das XML -Attribut in TreeView an und vermeiden Sie es,

zu wiederholen

<:> Frage:

Wenn der Foreach -Zyklus verwendet wird, um das Attribut des XML -Knotens in der TreeView anzuzeigen, wird das Attribut für jeden Sub -Node angezeigt, wodurch die Duplikation verursacht wird. Ziel ist es, sicherzustellen, dass das Attribut nur einmal angezeigt wird.

Beispiel:

Erwartete Verhalten:

<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 sollte das Attribut für jeden einzigartigen Knoten nur anzeigen. Zum Beispiel sollte das Attribut des Hostelements der ersten ID von "AA" nur einmal angezeigt und nicht wiederholt in seinem Subcress -Knoten angezeigt werden. Lösung:

Der folgende Code löst dieses Problem:

Vor dem iterativen untergeordneten Knoten prüft der Code, ob der aktuelle Knoten Attribute hat. Wenn es ein Attribut gibt, fügen Sie sie nur einmal zum Knotentext hinzu.

Führen Sie dann den Zyklus des Kalenderknotens aus und fügen Sie jeden untergeordneten Knoten zum TimeView hinzu.
<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>
  • Andere Vorsichtsmaßnahmen:
Wenn Namenszuordnungsattribute vorhanden sind, müssen Sie möglicherweise auf unterschiedliche Weise mit ihnen umgehen.

Wenn Sie die XML -Anweisung in der TreeView anzeigen müssen, fügen Sie sie in der Methode zur Schleife hinzu.

  • Diese Revisions -Antwort behält das Bild bei und liefert eine prägnantere und klarere Erklärung der Code -Lösung

Das obige ist der detaillierte Inhalt vonWie vermeiden Sie die doppelte Attributanzeige in einer Baumansicht beim Parsen von XML?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn