Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengelakkan Paparan Atribut Pendua dalam TreeView Apabila Menghuraikan XML?

Bagaimana untuk Mengelakkan Paparan Atribut Pendua dalam TreeView Apabila Menghuraikan XML?

Patricia Arquette
Patricia Arquetteasal
2025-01-27 12:01:11955semak imbas

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

Paparkan atribut XML dalam TreeView untuk mengelakkan pertindihan

Soalan:

Apabila menggunakan gelung foreach untuk memaparkan atribut nod XML dalam TreeView, atribut dipaparkan untuk setiap nod anak, mengakibatkan pendua. Matlamatnya adalah untuk memastikan bahawa harta itu hanya ditunjukkan sekali.

Contoh:

<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>

Tingkah laku yang dijangka:

TreeView hanya perlu memaparkan sifat sekali untuk setiap nod unik. Sebagai contoh, atribut elemen Hos pertama dengan ID "aa" hendaklah dipaparkan sekali sahaja, dan bukannya diulang dalam nod Alamat anaknya.

Penyelesaian:

Kod berikut menyelesaikan masalah:

<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>
  • Sebelum melelaran pada nod anak, kod menyemak sama ada atribut wujud pada nod semasa. Jika terdapat sebarang atribut, ia akan ditambahkan pada teks nod sekali sahaja.
  • Kemudian lakukan gelung yang melalui nod kanak-kanak dan tambahkan setiap nod kanak-kanak pada TreeView.

Nota lain:

  • Jika atribut ruang nama ada, anda mungkin perlu mengendalikannya secara berbeza.
  • Jika anda perlu memaparkan pengisytiharan XML dalam TreeView, tambahkannya pada gelung dalam kaedah DisplayTreeView.

Jawapan yang disemak ini mengekalkan imej dan memberikan penjelasan yang lebih ringkas dan jelas tentang penyelesaian kod itu sendiri tidak berubah, kerana ia sudah menjadi penyelesaian yang betul untuk masalah itu.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Paparan Atribut Pendua dalam TreeView Apabila Menghuraikan XML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn