Heim > Backend-Entwicklung > C++ > Wie verhindern Sie eine doppelte Attributanzeige, wenn XML mit Attributen in eine C# TreeView analysiert wird?

Wie verhindern Sie eine doppelte Attributanzeige, wenn XML mit Attributen in eine C# TreeView analysiert wird?

Susan Sarandon
Freigeben: 2025-01-27 11:46:12
Original
277 Leute haben es durchsucht

How to Prevent Duplicate Attribute Display When Parsing XML with Attributes into a C# TreeView?

Rekursion: XML -Datei mit Attributen in TreeView in C

Problem analysieren:

Analyse einer XML In den Attributen, die für jeden untergeordneten Knoten mehrmals angezeigt werden, hat es. Wie kann der Code geändert werden, um sicherzustellen, dass die Attribute nur einmal angezeigt werden? Schieben Sie die Schleife einmal durch die Attribute aus der Schleife durch die untergeordneten Knoten. 🎜> Wenn Sie die Anzeige von Namespace -Attributen entfernen möchten, verwenden Sie die folgende Erweiterungsmethode:

und überspringen Sie unerwünschte XMLATTRIBUTE -Instanzen:
<?xml version="1.0" encoding="utf-8"?>
<DataConfiguration xmlns="abcefg12345" xmlns:xsi="12345abcefg" xsi:schemaLocation="12345abcefg12345abcefg">
  <Hosts>
    <Sites>
        <Site Name="ss">
            <Host Id="aa">
                <Address Host="www.www.com"></Address>
            </Host>
            <Host Id="ee">
                <Address Host="www.www.com"></Address>
            </Host>
            <Host Id="dd">
                <Address Host="www.www.com"></Address>
            </Host> 
            <Host Id="pp">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com/" />
            </Host>
            <Host Id="ss">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
            </Host> 
            <Host Id="561">
                <Address Host="www.www.com"></Address>
            </Host> 
        </Site>
        <Site Name="hihi">
            <Host Id="cc">
                <Address Host="www.www.com"></Address>
            </Host>
            <Host Id="sdD">
                <Address Host="www.www.com"></Address>
            </Host>
            <Host Id="8uj">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" /> 
            </Host>
            <Host Id="222">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />               
            </Host>
            <Host Id="hhh">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
            </Host>
            <Host Id="hhh">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
            </Host>             
        </Site>     
    </Sites>
            <Host Id="hhh">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
            </Host>
            <Host Id="hhh">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
            </Host>
            <Host Id="hhh">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
            </Host>         
            <Host Id="hhh">
                <Address Scheme="ppp" Host="www.www.com" Path="www.www.com" />
            </Host>

</Hosts>
<DataPools>
    <DataPool Id="sss" default="sure">
        <DataGroup Id="sss" Parent="aaa" UserCanSelectHost="sure">
            <HostId Parent="hhhh">I'm breaking here</HostId>
            <DataSources>
                <empty/>
            </DataSources>
        </DataGroup>
        <DataGroup Id="ccc" UserCanSelectHost="whynot">
            <HostId>God I'm breaking here again, i hope you can fix me</HostId>
            <DataSources>
                <empty/>
            </DataSources>
        </DataGroup>
        <DataGroup Id="sss" UserCanSelectHost="yessure">
            <HostId>cry face</HostId>
                <webfg displaygroup="sss" provider="sss">
Nach dem Login kopieren

Anzeige Attribut- und Elementtext auf allen Knoten:

private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
{
    // Loop through the XML nodes until the leaf is reached.
    // Add the nodes to the TreeView during the looping process.
    if (inXmlNode.HasChildNodes)
    {
        //Check if the XmlNode has attributes
        foreach (XmlAttribute att in inXmlNode.Attributes)
        {
            inTreeNode.Text = inTreeNode.Text + " " + att.Name + ": " + att.Value;
        }

        var nodeList = inXmlNode.ChildNodes;
        for (int i = 0; i < nodeList.Count; i++)
        {
            var xNode = inXmlNode.ChildNodes[i];
            var tNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(xNode.Name))];
            AddNode(xNode, tNode);
        }
    }
    else
    {
        // Here you need to pull the data from the XmlNode based on the
        // type of node, whether attribute values are required, and so forth.
        inTreeNode.Text = (inXmlNode.OuterXml).Trim();
    }
    treeView1.ExpandAll();
}
Nach dem Login kopieren

Um sicherzustellen, dass alle Knoten ihren Elementnamen und ihre Attributdaten anzeigen, nicht nur diejenigen mit Kindern, verwenden Sie OuterxML nur für Textknoten:

Das obige ist der detaillierte Inhalt vonWie verhindern Sie eine doppelte Attributanzeige, wenn XML mit Attributen in eine C# TreeView analysiert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage