C#
私たちの目的は、このデータの階層的な表現を生成することです。
<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>
次のC#コードはLINQを利用してこの階層出力を達成します:
コードの内訳<code class="language-csharp">using System.Xml.Linq; using System.Text; public class XmlParser { public static void Main(string[] args) { StringBuilder output = new StringBuilder(); // Load the XML document XDocument xmlDoc = XDocument.Load("data.xml"); // LINQ query to extract hierarchical data var level1Nodes = from level1 in xmlDoc.Descendants("level1") select new { Name = level1.Attribute("name")?.Value, Level2Nodes = level1.Descendants("level2").Select(level2 => level2.Attribute("name")?.Value) }; // Format and output the data foreach (var level1 in level1Nodes) { output.AppendLine(level1.Name); foreach (var level2 in level1.Level2Nodes) { output.AppendLine(" " + level2); } } Console.WriteLine(output.ToString()); } }</code>
コードは、
。XDocument.Load
子ノードを効率的に選択します。 level1
その後、結果が反復され、階層構造が文字列操作を使用して構築され、適切なインデントが確保されます。
level2
これは、LINQがXMLの解析を単純化する方法を示し、C#で目的の階層出力を生成するための簡潔な方法を提供します。 パフォーマンスを向上させるために?.Value
の使用は文字列の連結を最適化します。以上がLinqは、C#のXMLデータの解析と階層出力をどのように単純化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。