c# xml deserialization: mengubah data XML menjadi objek
Panduan ini menunjukkan cara menukar dokumen XML ke dalam objek C#, satu proses yang dikenali sebagai deserialization. Mari kita gunakan sampel XML ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml version= "1.0" encoding= "utf-8" ?>
<cars>
<car>
<stocknumber>1020</stocknumber>
<make>Nissan</make>
<model>Sentra</model>
</car>
<car>
<stocknumber>1010</stocknumber>
<make>Toyota</make>
<model>Corolla</model>
</car>
<car>
<stocknumber>1111</stocknumber>
<make>Honda</make>
<model>Accord</model>
</car>
</cars>
|
Salin selepas log masuk
untuk deserialize ini, kami membuat kelas C yang sepadan:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [Serializable]
public class Car
{
[System.Xml.Serialization.XmlElementAttribute( "StockNumber" )]
public string StockNumber { get; set; }
[System.Xml.Serialization.XmlElementAttribute( "Make" )]
public string Make { get; set; }
[System.Xml.Serialization.XmlElementAttribute( "Model" )]
public string Model { get; set; }
}
[System.Xml.Serialization.XmlRootAttribute( "Cars" , Namespace = "" , IsNullable = false)]
public class Cars
{
[XmlArrayItem(typeof(Car))]
public Car[] Car { get; set; }
}
|
Salin selepas log masuk
Sekarang, kita boleh deserialize XML menggunakan
: XmlSerializer
1 2 3 4 5 6 | XmlSerializer serializer = new XmlSerializer(typeof(Cars));
Cars carData;
using (XmlReader reader = XmlReader.Create(xmlFilePath))
{
carData = (Cars)serializer.Deserialize(reader);
}
|
Salin selepas log masuk
ingat untuk menggantikan
dengan laluan sebenar ke fail XML anda. xmlFilePath
Sebagai alternatif, anda boleh menggunakan proses dua langkah yang melibatkan XSD:
-
menghasilkan XSD: Buat definisi skema XML (XSD) dari fail XML anda menggunakan alat yang sesuai (banyak IDE menawarkan fungsi ini).
-
Menjana kelas C# dari XSD: Gunakan alat baris arahan (disertakan dengan Visual Studio) dengan pilihan xsd.exe
untuk menghasilkan kelas C# dari XSD. Ini secara automatik akan membuat kelas mencerminkan struktur XML anda. Kemudian, gunakan /classes
seperti yang ditunjukkan di atas. Kaedah ini amat berguna untuk struktur XML yang kompleks. XmlSerializer
Atas ialah kandungan terperinci Bagaimana untuk menghilangkan dokumen XML ke dalam objek C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!