memanfaatkan LINQ untuk pengendalian data XML yang diselaraskan di C#
C# pemaju sering menghadapi cabaran pemprosesan data XML. LINQ menawarkan penyelesaian yang elegan untuk parsing XML yang cekap dan output berstruktur. Mari kita gambarkan ini dengan contoh fail XML:
1 | <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>
|
Salin selepas log masuk
Objektif kami adalah untuk menghasilkan perwakilan hierarki data ini:
1 2 3 4 5 6 7 | <code>A
A1
A2
B
B1
B2
C</code>
|
Salin selepas log masuk
Penyelesaian berasaskan LINQ
kod C# berikut menggunakan LINQ untuk mencapai output hierarki ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | using System.Xml.Linq;
using System.Text;
public class XmlParser
{
public static void Main(string[] args)
{
StringBuilder output = new StringBuilder();
XDocument xmlDoc = XDocument.Load( "data.xml" );
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)
};
foreach ( var level1 in level1Nodes)
{
output.AppendLine(level1.Name);
foreach ( var level2 in level1.Level2Nodes)
{
output.AppendLine( " " + level2);
}
}
Console.WriteLine(output.ToString());
}
}
|
Salin selepas log masuk
pecahan kod
Kod bermula dengan memuatkan fail XML menggunakan - .
XDocument.Load
pertanyaan LINQ dengan cekap memilih - nod dan nod kanak -kanak yang sepadan.
level1
mengendalikan nilai atribut null yang berpotensi dengan anggun. level2
?.Value
Hasilnya kemudiannya diulang, dan struktur hierarki dibina menggunakan manipulasi rentetan, memastikan lekukan yang betul.
-
Ini menunjukkan bagaimana LINQ memudahkan parsing XML dan menyediakan cara ringkas untuk menghasilkan output hierarki yang dikehendaki dalam C#. Penggunaan
mengoptimumkan penyambungan rentetan untuk prestasi yang lebih baik.
Atas ialah kandungan terperinci Bagaimanakah Linq memudahkan parsing data XML dan output hierarki dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!