首頁 > 後端開發 > C++ > 解析XML時如何避免TreeView中重複的屬性顯示?

解析XML時如何避免TreeView中重複的屬性顯示?

Patricia Arquette
發布: 2025-01-27 12:01:11
原創
932 人瀏覽過

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

在 TreeView 中顯示 XML 屬性,避免重複

問題:

當使用 foreach 循環在 TreeView 中顯示 XML 節點的屬性時,屬性會為每個子節點顯示,導致重複。目標是確保屬性只顯示一次。

示例:

<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 應該只為每個唯一的節點顯示一次屬性。例如,第一個 ID 為“aa”的 Host 元素的屬性應該只顯示一次,而不是在其子 Address 節點中重複顯示。

解決方案:

以下代碼解決了這個問題:

<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>
登入後複製
  • 在迭代子節點之前,代碼檢查當前節點是否存在屬性。如果存在任何屬性,則僅將它們添加到節點文本一次。
  • 然後執行遍歷子節點的循環,並將每個子節點添加到 TreeView。

其他注意事項:

  • 如果存在命名空間屬性,您可能需要以不同的方式處理它們。
  • 如果您需要在 TreeView 中顯示 XML 聲明,請將其添加到 DisplayTreeView 方法中的循環中。

This revised answer maintains the image and provides a more concise and clearer explanation of the code solution. The code itself is unchanged, as it was already a correct solution to the problem.

以上是解析XML時如何避免TreeView中重複的屬性顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板