ホームページ > バックエンド開発 > C++ > XML の解析時にツリービューでの重複した属性の表示を回避するにはどうすればよいですか?

XML の解析時にツリービューでの重複した属性の表示を回避するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-27 12:01:11
オリジナル
932 人が閲覧しました

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

重複を避けるために XML 属性を TreeView に表示します

質問:

foreach ループを使用して XML ノードの属性を TreeView に表示すると、属性が子ノードごとに表示されるため、重複が発生します。目標は、プロパティが 1 回だけ表示されるようにすることです。

例:

<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 は、一意のノードごとにプロパティを 1 回だけ表示する必要があります。たとえば、ID「aa」を持つ最初の Host 要素の属性は、その子 Address ノードで繰り返されるのではなく、1 回だけ表示される必要があります。

解決策:

次のコードは問題を解決します:

<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>
ログイン後にコピー
  • 子ノードを反復処理する前に、コードは現在のノードに属性が存在するかどうかをチェックします。属性が存在する場合、それらはノード テキストに 1 回だけ追加されます。
  • 次に、子ノードを通過するループを実行し、各子ノードを TreeView に追加します。

その他の注意事項:

  • 名前空間属性が存在する場合は、それらを別の方法で処理する必要がある場合があります。
  • TreeView に XML 宣言を表示する必要がある場合は、それを DisplayTreeView メソッドのループに追加します。

この改訂された回答では、イメージが維持され、コードの解決策がより簡潔かつ明確に説明されています。これはすでに問題に対する正しい解決策であるため、コード自体は変更されていません。

以上がXML の解析時にツリービューでの重複した属性の表示を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート