ホームページ > バックエンド開発 > C++ > linqからXMLからXMLデータのネストされたデータを効率的に解析し、フォーマットするにはどうすればよいですか?

linqからXMLからXMLデータのネストされたデータを効率的に解析し、フォーマットするにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-30 05:01:08
オリジナル
905 人が閲覧しました

How Can LINQ to XML Efficiently Parse and Format Nested XML Data?

linq to XML:XMLデータ処理への強力なアプローチ

.NETのLINQからXMLは、XMLデータを処理するエレガントで効率的な方法を提供します。 C#を使用して、ネストされたXML構造を解析してフォーマットする方法を調べましょう。 このサンプルXMLを考えてみましょう:

<code class="language-xml"><root><level1 name="A"><level2 name="A1"></level2><level2 name="A2"></level2></level1><level1 name="B"><level2 name="B1"></level2><level2 name="B2"></level2></level1><level1 name="C"></level1></root></code>
ログイン後にコピー

私たちの目標は、このデータを階層形式で出力することです。

<code>A
  A1
  A2
B
  B1
  B2
C</code>
ログイン後にコピー

linqをxml で解析します

を使用してXMLをロードすることから始めます。 次に、linqクエリはXDocument.Load()ノードとその「名前」属性を選択します:level1

<code class="language-csharp">XDocument xdoc = XDocument.Load("data.xml");

var level1Nodes = from level1 in xdoc.Descendants("level1")
                  select level1.Attribute("name").Value;</code>
ログイン後にコピー

ネストされたレベル2ノードへのアクセス ネストされた

ノードにアクセスするには、ネストされたループを使用します。 外側のループの内部(

を繰り返します)、2番目のlinqクエリフィルターlevel2ノードは、親の「名前」属性に基づいています。 level1Nodes level2インデント( "")は、レベル2を出力のレベル1ノードと区別します。

<code class="language-csharp">foreach (var level1 in level1Nodes)
{
    Console.WriteLine(level1);
    var level2Nodes = from level2 in xdoc.Descendants("level2")
                      where level2.Parent.Attribute("name").Value == level1
                      select level2.Attribute("name").Value;
    foreach (var level2 in level2Nodes)
    {
        Console.WriteLine("  " + level2);
    }
}</code>
ログイン後にコピー
完全なc#コード

これが完全な機能コードスニペットです: これは、クリーンで読みやすいC#コードベース内の複雑なXML構造を解析およびフォーマットするためのlinqのXMLへのパワーと効率を示しています。

以上がlinqからXMLからXMLデータのネストされたデータを効率的に解析し、フォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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