Cara memproses xml di c. Cara membuka dokumen XML - fitur bekerja dengan file XML. Membuat elemen XML dengan elemen anak




Bahasa Markup yang Dapat Diperluas (XML). Mereka benar-benar hanya file teks yang menggunakan tag khusus untuk menjelaskan struktur dan fitur lain dari dokumen tersebut.

Apa itu XML

XML adalah bahasa markup yang dibuat oleh World Wide Web Consortium (W3C) untuk menentukan sintaks pengkodean untuk dokumen yang dapat dibaca oleh manusia dan mesin. Ini dilakukan dengan tag, yang menentukan struktur dokumen serta bagaimana dokumen disimpan dan diangkut.

Cara termudah untuk membandingkannya adalah dengan bahasa markup lain yang mungkin Anda kenal, yaitu markup hiperteks(HTML) digunakan untuk menyandikan halaman web. HTML menggunakan kumpulan karakter markup (kode pendek) yang telah ditentukan sebelumnya yang menjelaskan format konten pada halaman web.

Namun, perbedaan antara XML adalah dapat diperluas. XML tidak memiliki bahasa markup yang telah ditentukan sebelumnya seperti halnya HTML. Sebaliknya, XML memungkinkan pengguna untuk membuat karakter markup mereka sendiri untuk mendeskripsikan konten, membentuk kumpulan karakter yang tidak terbatas dan dapat ditentukan sendiri.

Pada dasarnya, HTML adalah bahasa yang berfokus pada penyajian konten, sedangkan XML adalah bahasa deskripsi data khusus yang digunakan untuk menyimpan data.

XML sering digunakan sebagai dasar untuk format dokumen lain yang jumlahnya ratusan. Berikut ini beberapa yang mungkin ingin Anda ketahui:

  • RSS dan ATOM menjelaskan bagaimana aplikasi harus menangani umpan.
  • Microsoft .NET menggunakan XML untuk file konfigurasinya.
  • Microsoft Office menggunakan XML sebagai dasar struktur dokumen.

Jadi jika Anda memiliki file XML, itu tidak selalu memberi tahu Anda untuk aplikasi apa itu. Namun, Anda tidak perlu khawatir tentang hal ini kecuali Anda sedang mengembangkan file XML.

Cara membuka file XML

Ada beberapa cara untuk membuka file XML secara langsung. Anda dapat membuka dan mengeditnya dengan editor teks apa pun, melihatnya dengan browser web apa pun, atau menggunakan situs web yang memungkinkan Anda untuk melihat, mengedit, dan bahkan mengonversinya ke format lain.

Gunakan editor teks saat bekerja dengan XML secara teratur

Karena file XML hanyalah file teks biasa, file tersebut dapat dibuka dengan editor teks apa pun. Namun, banyak editor teks, seperti Notepad, tidak dirancang untuk menampilkan file XML dalam struktur yang benar. Ini berguna untuk membiasakan diri Anda dengan konten file XML dengan cepat. Tapi, ada alat yang lebih nyaman untuk bekerja dengannya.


Menggunakan Browser Web untuk Melihat File XML

Jika Anda tidak perlu mengedit file XML, tetapi hanya perlu melihat kontennya, browser Anda dapat menangani tugas tersebut. Terlebih lagi, browser web Anda kemungkinan besar sudah disiapkan sebagai penampil XML standar. Jadi, mengklik dua kali file XML akan membukanya di browser.

Jika tidak, Anda dapat mengklik kanan file tersebut untuk menemukan opsi untuk membukanya dengan aplikasi lain. Cukup pilih browser web Anda dari daftar program.

Saat file dibuka, Anda akan melihat data yang terstruktur dengan baik. Ini tidak secantik tampilan warna yang Anda dapatkan di Notepad ++, tetapi jauh lebih baik daripada notepad.

Menggunakan editor online untuk file XML

Jika Anda ingin mengedit file XML acak dan tidak ingin mengunduh editor teks baru, atau Anda perlu melakukannya konversi file xml ke format lain, ada beberapa editor XML online yang layak tersedia secara gratis.

TutorialsPoint.com , XMLGrid.net dan CodeBeautify.org - memungkinkan Anda melihat dan mengedit file XML. Setelah pengeditan selesai, Anda dapat mengunggah file XML yang dimodifikasi atau bahkan mengonversinya ke format lain.

Mari gunakan CodeBeautify.org sebagai contoh. Halaman ini dibagi menjadi tiga bagian. Di sebelah kiri adalah file XML yang sedang Anda kerjakan. Di bagian tengah Anda akan menemukan beberapa fungsi. Di sebelah kanan, Anda akan melihat hasil dari beberapa opsi yang dapat Anda pilih.

Misalnya, pada gambar di bawah, file XML lengkap kita ada di sebelah kiri, dan panel hasil menampilkan tampilan struktur pohon karena kita mengklik tombol Tampilan Pohon di tengah.

Gunakan tombol Telusuri untuk memuat file XML dari komputer Anda atau tombol Muat URL untuk mengambil XML dari sumber internet

Tombol Tampilan Pohon menampilkan data dalam struktur pohon yang diformat dengan baik di panel hasil, dengan semua tag disorot dalam warna oranye dan atribut di sebelah kanan tag.

Beatify menampilkan data Anda dengan cara yang rapi dan mudah dibaca.

Tombol Perkecil menampilkan data Anda menggunakan jumlah spasi paling sedikit. Fungsi ini akan menempatkan setiap bagian data pada satu baris. Ini akan berguna saat mencoba membuat file lebih kecil, yang akan menghemat ruang.

Terakhir, Anda dapat menggunakan tombol XML ke JSON untuk mengonversi format XML ke JSON, dan tombol Ekspor ke CSV untuk menyimpan data sebagai file nilai yang dipisahkan koma, atau tombol Unduh untuk mengunduh setiap perubahan yang telah Anda buat ke file XML baru. .

Anda mungkin pernah mendengar tentang XML dan ada banyak alasan mengapa Anda harus menggunakannya di organisasi Anda. Tapi apa sebenarnya XML itu? Artikel ini menjelaskan apa itu XML dan cara kerjanya.

Dalam artikel ini

Markup, markup, dan tag

Untuk memahami XML, sebaiknya ingat cara memberi label pada data. Dokumen telah dibuat oleh orang-orang selama berabad-abad, dan selama ini orang telah membuat catatan di dalamnya. Misalnya, guru sering menandai pekerjaan siswa untuk menunjukkan perlunya memindahkan paragraf, memperjelas kalimat, memperbaiki kesalahan ejaan, dan sebagainya.Menandai dokumen dapat menentukan struktur, makna, dan tampilan informasi. Jika Anda pernah menggunakan koreksi di Microsoft Office Word, maka Anda sudah familiar dengan formulir anotasi terkomputerisasi.

Dalam dunia teknologi informasi, istilah “tagging” menjadi istilah “markup”. Markup menggunakan kode yang disebut tag (atau terkadang token) untuk menentukan struktur, tampilan visual, dan - dalam kasus XML - arti data.

Teks HTML artikel ini adalah contoh penggunaan markup komputer yang bagus. Jika Anda klik kanan halaman ini di Microsoft Internet Explorer dan pilih Lihat kode HTML, Anda akan melihat teks yang dapat dibaca dan tag HTML seperti

DAN

. Dalam dokumen HTML dan XML, tag mudah dikenali karena dilampirkan dalam tanda kurung sudut. Dalam kode sumber artikel ini, tag HTML melakukan banyak fungsi, seperti menentukan awal dan akhir setiap paragraf (

...

) dan lokasi gambar.

Fitur khas XML

Dokumen dalam format HTML dan XML berisi data yang diapit oleh tag, tetapi di situlah kesamaan antara kedua bahasa tersebut berakhir. Dalam format HTML, tag menentukan penyajian data - lokasi judul, awal paragraf, dll. Dalam format XML, tag menentukan struktur dan arti data - apa adanya.

Saat mendeskripsikan struktur dan arti data, menjadi mungkin untuk menggunakannya kembali dalam beberapa cara. Misalnya, jika Anda memiliki blok data penjualan di mana setiap elemen didefinisikan dengan jelas, Anda hanya dapat memuat elemen yang diperlukan ke dalam laporan penjualan dan mentransfer data lainnya ke database akuntansi. Dengan kata lain, Anda dapat menggunakan satu sistem untuk menghasilkan data dan menandainya dalam format XML, lalu memproses data ini di sistem lain mana pun, apa pun platform klien atau sistem operasinya. Interoperabilitas ini menjadikan XML tulang punggung salah satu teknologi pertukaran data paling populer.

Ingatlah hal-hal berikut saat bekerja:

    HTML tidak dapat digunakan sebagai pengganti XML. Namun, data XML dapat dibungkus dalam tag HTML dan ditampilkan di halaman web.

    Fitur HTML terbatas pada kumpulan tag standar yang umum untuk semua pengguna.

    Aturan XML memungkinkan Anda membuat tag apa pun yang diperlukan untuk mendeskripsikan data dan strukturnya. Katakanlah Anda perlu menyimpan dan berbagi informasi tentang hewan peliharaan. Untuk melakukannya, Anda dapat membuat kode XML berikut:

    Izzy Siam 6 Ya TIDAK Izz138bod Colin Wilcox

Seperti yang Anda lihat, tag XML memperjelas data apa yang Anda lihat. Misalnya, jelas bahwa ini adalah data tentang kucing, dan Anda dapat dengan mudah menentukan nama, umur, dan sebagainya.Dengan kemampuan membuat tag yang menentukan hampir semua struktur data, XML dapat diperluas.

Tapi jangan bingung tag dalam contoh ini dengan tag dalam file HTML. Misalnya, jika teks XML di atas ditempelkan ke file HTML dan dibuka di browser, hasilnya akan terlihat seperti ini:

Izzy Siam 6 ya tidak Izz138bod Colin Wilcox

Browser web akan mengabaikan tag XML dan hanya menampilkan data.

Data yang terbentuk dengan baik

Anda mungkin pernah mendengar seseorang di TI berbicara tentang file XML yang "dibentuk dengan baik". File XML yang terbentuk dengan baik harus mengikuti aturan yang sangat ketat. Jika tidak mengikuti aturan ini, XML tidak berfungsi. Misalnya, dalam contoh sebelumnya, setiap tag awal memiliki tag akhir yang sesuai, jadi contoh ini mengikuti salah satu aturan untuk file XML yang dibuat dengan baik. Jika Anda menghapus tag apa pun dari file dan mencoba membukanya di salah satu program Office, Anda akan menerima pesan kesalahan dan Anda tidak akan dapat menggunakan file tersebut.

Anda tidak perlu mengetahui aturan untuk membuat file XML yang terbentuk dengan baik (walaupun mudah dipahami), tetapi ingat bahwa hanya data XML yang terbentuk dengan baik yang dapat digunakan di aplikasi dan sistem lain. Jika file XML tidak terbuka, mungkin formatnya salah.

XML adalah platform independen, yang berarti bahwa setiap program yang dibuat untuk menggunakan XML dapat membaca dan memproses data XML terlepas dari perangkat keras atau sistem operasinya. Misalnya, dengan tag XML yang tepat, Anda dapat menggunakan program desktop untuk membuka dan memproses data yang diterima dari mainframe. Dan, siapa pun yang membuat data XML, dimungkinkan untuk bekerja dengan data di berbagai aplikasi Office. Karena interoperabilitasnya, XML telah menjadi salah satu teknologi paling populer untuk bertukar data antara database dan komputer pengguna.

Selain data yang ditandai dengan baik, sistem XML biasanya menggunakan dua komponen tambahan: skema dan transformasi. Bagian berikut menjelaskan cara kerjanya.

Skema

Jangan terintimidasi oleh istilah "skema". Skema hanyalah file XML yang berisi aturan untuk konten file data XML. File skema biasanya memiliki ekstensi .xsd, sedangkan file data XML menggunakan ekstensi .xml.

Skema memungkinkan program memvalidasi data. Mereka membentuk struktur data dan membuatnya dapat dipahami oleh pencipta dan orang lain. Misalnya, jika pengguna memasukkan data yang tidak valid, seperti teks di kolom tanggal, program mungkin meminta pengguna untuk memperbaikinya. Jika data dalam file XML cocok dengan aturan dalam skema, Anda dapat menggunakan program apa pun yang mendukung XML untuk membaca, menafsirkan, dan memprosesnya. Misalnya, seperti yang ditunjukkan pada gambar di bawah ini, Excel dapat memvalidasi data untuk mematuhi skema CAT.

Skema bisa rumit, dan tidak mungkin menjelaskan cara membuatnya di artikel ini. (Mungkin juga organisasi Anda memiliki staf TI yang mengetahui cara melakukan ini.) Namun, mengetahui seperti apa diagramnya akan sangat membantu. Skema berikut menentukan aturan untuk sekumpulan tag ... :

Jangan khawatir jika contohnya tidak masuk akal. Perhatikan saja hal-hal berikut ini:

    Elemen sebaris dalam skema contoh disebut deklarasi. Jika detail tambahan tentang hewan diperlukan, seperti warna atau fitur khususnya, departemen TI akan menambahkan deklarasi yang sesuai ke skema. Sistem XML dapat berubah seiring berkembangnya kebutuhan bisnis.

    Deklarasi adalah cara ampuh untuk mengontrol struktur data. Misalnya, iklan berarti tag seperti Dan , harus dalam urutan di atas. Deklarasi juga dapat memeriksa jenis input pengguna. Misalnya, skema di atas memerlukan bilangan bulat positif untuk usia kucing dan boolean (BENAR atau SALAH) untuk tag DIUBAH dan DITOLAK.

    Jika data dalam file XML sesuai dengan aturan skema, maka data tersebut dikatakan valid. Proses pemeriksaan bahwa file data XML sesuai dengan aturan skema (cukup logis) disebut validasi. Keuntungan besar menggunakan skema adalah mereka dapat mencegah korupsi data. Skema juga memudahkan untuk menemukan data yang rusak karena saat masalah tersebut terjadi, pemrosesan file XML dihentikan.

Transformasi

Seperti dibahas di atas, XML juga memungkinkan penggunaan dan penggunaan kembali data secara efisien. Mekanisme penggunaan kembali data disebut transformasi XSLT (atau hanya transformasi).

Anda (atau departemen TI Anda) juga dapat menggunakan transformasi untuk bertukar data antar sistem back-end, seperti antar database. Asumsikan database A memiliki data penjualan dalam tabel yang berguna untuk departemen penjualan. Database B menyimpan data pendapatan dan pengeluaran dalam tabel yang dirancang khusus untuk akuntansi. Database B dapat menggunakan transformasi untuk mengambil data dari database A dan memasukkannya ke dalam tabel yang sesuai.

Kombinasi file data, skema, dan transformasi membentuk sistem XML yang mendasarinya. Gambar berikut menunjukkan pengoperasian sistem tersebut. File data diperiksa berdasarkan aturan skema dan kemudian dikirimkan dengan cara yang sesuai untuk transformasi. Dalam hal ini, transformasi menempatkan data dalam tabel di halaman web.

Contoh berikut menunjukkan transformasi yang memuat data ke tabel di halaman web. Inti dari contoh tersebut bukan untuk menjelaskan bagaimana membuat transformasi, tetapi untuk menunjukkan salah satu bentuk yang dapat mereka ambil.

Nama Keturunan Usia diubah Dinyatakan Lisensi Pemilik

Contoh ini menunjukkan seperti apa teks dari salah satu jenis transformasi, tetapi ingat bahwa Anda dapat membatasi diri Anda pada deskripsi yang jelas tentang apa yang Anda butuhkan dari data, dan deskripsi ini dapat dilakukan dalam bahasa Anda sendiri. Misalnya, Anda dapat pergi ke departemen TI dan mengatakan bahwa Anda perlu mencetak data penjualan untuk wilayah tertentu selama dua tahun terakhir, dan informasi ini akan terlihat seperti ini dan itu. Setelah itu, spesialis departemen dapat menulis (atau memodifikasi) transformasi untuk memenuhi permintaan Anda.

Microsoft dan semakin banyak perusahaan lain membuat transformasi untuk berbagai tugas yang membuat penggunaan XML menjadi lebih nyaman. Di masa mendatang, kemungkinan besar Anda dapat mengunduh konversi yang sesuai dengan kebutuhan Anda dengan sedikit atau tanpa penyesuaian. Ini berarti bahwa seiring waktu, penggunaan XML akan menjadi semakin murah.

XML dalam sistem Microsoft Office

Edisi profesional Office memberikan dukungan yang disempurnakan untuk XML. Dimulai dengan Sistem Microsoft Office 2007, Microsoft Office menggunakan format file berbasis XML seperti DOCX, XLSX, dan PPTX. Karena XML menyimpan data dalam format teks daripada format binernya sendiri, klien dapat menentukan skema mereka sendiri dan menggunakan data Anda dengan berbagai cara tanpa harus membayar royalti. Untuk informasi selengkapnya tentang format baru, lihat Membuka Format XML dan Ekstensi Nama File. Di bawah ini adalah manfaat lainnya.

Semua ini bagus, tetapi bagaimana jika Anda memiliki data XML tanpa skema? Itu tergantung pada program Office mana yang Anda gunakan. Misalnya, saat Anda membuka file XML tanpa skema di Excel, ini mengasumsikan bahwa skema tersebut ada dan memungkinkan Anda memuat data ke dalam tabel XML. Anda bisa menggunakan daftar dan tabel XML untuk mengurutkan, memfilter, dan menghitung data.

Aktifkan Alat XML di Office

Secara default, tab Pengembang tidak ditampilkan. Itu harus ditambahkan ke pita untuk menggunakan perintah XML di Office.

Pada artikel sebelumnya, konsep umum yang terkait dengan XML dijelaskan. Pada artikel ini, kita akan mempelajari cara melakukan tindakan dasar yang terkait dengan mengubah, menambah, mencari dalam file XML.

File XML yang digunakan sebagai contoh.

Mazda 2007 bmw 2009

xml dom

Saat ini, file kami berisi struktur berikut:

Hubungan antara node di DOM XML, momen dasar:

1. Setiap simpul di pohon DOM memiliki induk ParentNode . Dalam contoh kita, garasi adalah induk dari kedua elemen mobil, dan kedua elemen mobil pada gilirannya adalah induk dari elemen model dan tahun.

Bagaimana cara mendapatkan induk dari elemen xml mobil?

Console.WriteLine(elmRoot["mobil"].ParentNode.Name); //Hasil: garasi

2. Orang tua dapat memiliki anak ChildNodes. Misalnya, untuk simpul garasi, kedua elemen mobil adalah anak-anak. Elemen mobil juga memiliki anak model dan tahun.

ChildNodes, adalah koleksi yang menyimpan semua elemen xml turunan, untuk mengakses elemen yang diinginkan, Anda perlu menentukan indeksnya. (Indeks selalu dimulai dari nol!)

Misalnya: bagaimana cara mendapatkan elemen anak pertama?

ElmRoot.ChildNodes;

3. Seperti dalam kehidupan biasa, seorang anak bisa lahir sebagai FirstChild pertama, atau LastChild terakhir.

Jika kita mengambil elemen mobil sebagai contoh, maka

FirstChild adalah model LastChild adalah tahun

4. Pada gilirannya, ada juga koneksi antara elemen anak, mereka bisa menjadi saudara laki-laki atau perempuan, jika kita menarik kesejajaran dengan kehidupan nyata.

Seorang anak dapat memiliki, misalnya, saudara laki-laki sebelumnya dan saudara laki-laki berikutnya

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Hasil: tahun Console.WriteLine(elmRoot.ChildNodes.LastChild.PreviousSibling.Name); //Hasil: model

Jika elemen tidak ditemukan, maka pengecualian dilemparkan: NullReferenceException, jadi saat bekerja dengan xml, selalu gunakan blok try catch.

Console.WriteLine(elmRoot.ChildNodes.LastChild.NextSibling.Name); Console.WriteLine(elmRoot.ChildNodes.FirstChild.PreviousSibling.Name);

LastChild adalah NextSibling;
FirstChild adalah SebelumnyaSaudara;

Dengan menggunakan metode yang dijelaskan di atas, Anda dapat dengan mudah menavigasi ke simpul yang diinginkan dan mendapatkan nilai apa pun yang Anda butuhkan.

Bagaimana cara mendapatkan nilai elemen xml?

Nilai elemen xml dapat diperoleh dengan menggunakan properti InnerText, misalnya:

Console.WriteLine(elmRoot["mobil"].FirstChild.InnerText); //Hasil: mazda

Cara lain untuk mendapatkan nilai elemen xml yang sama:

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Hasil: mazda

Urutan bergerak melalui pohon DOM:

Garasi -> mobil -> model -> Mazda

Dapatkan tahun:

ElmRoot["mobil"].LastChild.InnerText; //Hasil: 2007

Selanjutnya:

Garasi -> mobil -> tahun -> 2007

Contoh lain: 3 cara untuk mendapatkan hasil yang sama.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["mobil"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Hasil: BMW

Jika Anda ingin mendapatkan tahun untuk elemen dengan nilai Mazda:

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Hasil: 2007

Untuk BMW (dua cara, dapatkan hasil yang sama)

Console.WriteLine(elmRoot.ChildNodes.Item(1).ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Hasil: 2009

Bagaimana cara mengubah nilai elemen xml?

Menggunakan properti InnerText() Anda berdua bisa mendapatkan dan mengubah nilai elemen xml, misalnya mengubah tahun.

//Tetapkan nilai baru elmRoot.FirstChild.LastChild.InnerText = "2010"; //Keluarkan nilai baru ke layar konsol Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Hasil: 2010

Pada saat yang sama, Anda perlu mengingat bahwa semua perubahan terjadi dengan file xml virtual, jika Anda membuka file fisik, Anda akan melihat bahwa tahun 2007 masih tertera di dalamnya.

Agar perubahan diterapkan, Anda perlu menggunakan metode Simpan, misalnya:

ElmRoot.Save("nama file atau aliran xml");

Sekarang informasi tersebut akan diubah dalam file xml "fisik".

Bagaimana cara mendapatkan jumlah elemen anak?

Console.WriteLine(elmRoot.FirstChild.ChildNodes.Count);

garasi -> mobil berisi 2 anak: model dan tahun

Console.WriteLine(elmRoot.FirstChild.FirstChild.ChildNodes.Count);

garasi -> mobil -> model berisi 1 elemen anak xml.

Mengakses elemen anak

berdasarkan indeks

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Hasil: mobil

Dengan lingkaran

Foreach (XmlNode mengangguk di elmRoot.ChildNodes) ( Console.WriteLine(nod.Name); ) //Hasil: mobil, mobil

Bagaimana cara mendapatkan nama elemen xml?

elmRoot.Nama; //Hasil: garasi

Membuat Elemen XML Baru

Mari buat elemen baru dalam dokumen XML kita untuk membedakannya dari dua lainnya (mobil), sebut saja itu bus.

Saat membuat elemen baru, kami akan menggunakan rekomendasi dari situs msdn dan menggunakan metode CreateElement alih-alih XmlElement baru standar.

XmlElement elm = xmlDoc.CreateElement("bus");

Membuat dan menambahkan elemen xml baru

Mari buat elemen xml baru bernama "BUS".

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //mobil, mobil XmlElement elmNew = xmlDoc.CreateElement("bus"); elmRoot.AppendChild(elmBaru); Console.WriteLine(elmRoot.ChildNodes.Count); //3 mobil, mobil, bus xmlDoc.Save("nama file xml");

Penjelasan:

1. Pertama, kita mendapatkan elemen root yang akan kita lampirkan elemen baru.

2. Sebagai ujian, cetak jumlah anak elemen garasi saat ini: 2 (mobil dan mobil)

3. Buat elemen BUS baru

4. Menggunakan metode Tambahkan Anak tambahkan elemen baru ke pohon

5. Mari gunakan centang lagi dan tampilkan jumlah elemen saat ini untuk elemen garasi, sekarang ada 3 di antaranya: mobil, mobil, bus.

6. Agar perubahan mempengaruhi file fisik, kami simpan

Dalam file XML itu sendiri, elemen baru akan terlihat seperti ini:

Bagaimana cara menambahkan elemen xml baru?

Tugas: buat elemen XML baru dan tambahkan beberapa konten teks ke dalamnya, seperti tahun pembuatan.

String strFilename = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmNew = xmlDoc.CreateElement("bus"); XmlText new_txt = xmlDoc.CreateTextNode("2006"); elmRoot.AppendChild(elmBaru); elmRoot.LastChild.AppendChild(new_txt); Console.WriteLine(elmRoot.ChildNodes.Name); //bus Console.WriteLine(elmRoot.ChildNodes.LastChild.InnerText); //2006 Konsol.Baca();

Dalam file XML:

2006

Untuk kejelasan

Dan sekarang mari kita buat node "bus", dengan arsitektur yang sama dengan mobil, yaitu menambahkan node: model, tahun, dan beberapa konten teks.

Membuat elemen XML dengan elemen anak

string strFilename = @"C:\lessons\Auto.xml"; //buat dokumen xml baru di memori XmlDocument xmlDoc = new XmlDocument(); //memuat file xml ke dalam memori xmlDoc.Load(strFilename); //Dapatkan elemen root XmlElement elmRoot = xmlDoc.DocumentElement; //Buat 3 elemen: bus, model, tahun XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmTahun = xmlDoc.CreateElement("tahun"); //Tetapkan nilai untuk elemen: model, tahun XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); tambahkan sebaliknya //Tambahkan dua elemen anak ke elemen bus: model dan tahun elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmTahun); //Tambahkan nilai ke node model dan tahun elmModel.InnerText = "liaz"; elmYear.AppendChild(year_txt); //Tambahkan bus elemen xml baru ke pohon elmRoot.AppendChild(elmBUS); //Periksa apakah semuanya sudah ditambahkan dengan benar Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Jika semuanya beres, gunakan metode Simpan xmlDoc.Save("nama file xml");

Hasil:

liaz 2006

Bagaimana Anda bisa mempersingkat kode ini? Misalnya, sebagai berikut:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmTahun = xmlDoc.CreateElement("tahun"); //Tambahkan nilai ke node model dan tahun elmModel.InnerText = "liaz"; elmTahun.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmTahun); elmRoot.AppendChild(elmBUS); //Jika semuanya benar, maka panggil metode Simpan xmlDoc.Save("nama file xml");

Mari kita persingkat kodenya sedikit lagi, untuk ini kita akan menggunakan properti InnerXml:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); string txt=" liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (akan menjadi garasi) adalah cara lain untuk mengakses elemen root, sama seperti XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild( elmXML);xmlDoc .Simpan(PathXmlFile);

Hasil

Dapatkan daftar elemen dengan GetElementByTagName

GetElementByTagName kembali XmlNodeList, yang berisi semua elemen turunan yang termasuk dalam elemen yang ditentukan, misalnya, kita perlu mendapatkan semua model mobil yang disimpan di garasi:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); foreach (XmlNode node di modelName) ( Console.WriteLine(node.InnerText); ) //Hasil: mazda, bmw, liaz

Merujuk dengan indeks:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Hasil: liaz

Bagaimana cara mengubah konten teks dari elemen "bus" yang baru dibuat menggunakan metode GetElementByTagName?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Dapatkan nilai: liaz

Atau Anda bisa mengganti nama liaz menjadi Ikarus

Console.WriteLine(modelName.InnerText = "Ikarus");

Sudah cukup lama sejak saya berjanji untuk berbicara tentang bekerja dengan data XML saat mengembangkan aplikasi .NET. Janji harus ditepati. Harap dicatat bahwa artikel ini tidak ditujukan untuk pengembang .NET profesional, tetapi untuk mereka yang belum memiliki pengalaman yang signifikan dalam membuat aplikasi .NET.


Mengapa kita perlu bekerja dengan XML?

Jika Anda masih belum terlalu paham apa itu XML, maka saya sarankan untuk membaca artikel "XML itu serius dan untuk waktu yang lama" di "KV" No. 2007. Untuk menghemat ruang untuk hal-hal yang lebih penting, format XML itu sendiri tidak akan diuraikan di sini.

Sebelum Anda mulai mengenal kode program, Anda perlu menjawab satu pertanyaan mendasar: mengapa menyertakan dukungan XML dalam aplikasi Anda? Saya pikir banyak yang bertanya pada diri sendiri pertanyaan ini tentang banyak teknologi, dan tidak semuanya dimasukkan dalam aplikasi setelah jawabannya. Namun, ada sedikit perbedaan dengan XML, dan ada alasan nyata untuk menggunakan format ini dalam banyak situasi.

Keuntungan utama XML adalah, karena pada dasarnya merupakan format teks, XML memungkinkan Anda untuk menyimpan dan mengirimkan data apa pun dengan sempurna. Karena format ini bersifat tekstual, masalah sifat lintas platformnya diselesaikan dengan sendirinya, dan masalah pengiriman data XML dengan mudah diselesaikan (seperti, misalnya, dilakukan dalam SOAP). Selain itu, Anda dapat dengan mudah mengubah transmisi atau format penyimpanan dengan menambahkan atribut baru dan tidak terlalu khawatir tentang kompatibilitas dengan format versi sebelumnya, karena aplikasi yang menggunakan versi lama akan dapat membaca apa yang mereka butuhkan tanpa memperhatikan tag baru atau atribut. . Banyak aplikasi menggunakan format file berbasis XML, banyak protokol komunikasi juga berbasis XML, dan daftar keduanya terus bertambah.

Tentu saja, di sisi lain, XML tidak terlalu ekonomis, karena, seperti yang pernah dicatat dengan benar oleh salah satu pengunjung forum Berita Komputer, dokumen XML seringkali terdiri dari 10% data dan 90% tag. Namun, itu sangat tergantung pada tag apa yang Anda pilih. Kamu bisa menulis st. Melnikate, 2, Bisakah saya . Meskipun, sejujurnya, menurut saya dengan hard drive saat ini dan saluran yang tebal, tidak ada gunanya menyusut.

Jadi di tangan yang cakap, XML adalah hal yang kuat dan nyaman, dan karena format ini ada di mana-mana, Anda tidak dapat memperoleh apa pun darinya. Jadi mari beralih ke penulisan kode program.

Untuk pemrograman, kami akan menggunakan bahasa utama platform .NET - C#. Agar sebanyak mungkin pembaca dapat berlatih sendiri dengan kode program di atas, saya akan menggunakan versi pertama C # dan .NET Framework "a.


Perekaman data

Pertama, mari kita bicara tentang menulis data, karena, Anda tahu, untuk membaca sesuatu dari suatu tempat, Anda harus menulis sesuatu di suatu tempat terlebih dahulu. Dan begitu kita terlibat dalam pemrograman, maka tidak tepat bagi kita untuk membuat data XML dengan "pegangan". Oleh karena itu, pertama-tama mari kita bahas penulisan data dalam XML.

Untuk memulai, buat proyek baru di Visual Studio, #Develop atau C# Builder, dan tambahkan System.Xml ke daftar ruang nama yang diimpor.

Kelas XmlTextWriter khusus bertanggung jawab untuk menulis data XML dalam .NET Framework, yang memungkinkan Anda untuk menulis data XML ke aliran sewenang-wenang Artinya, kita, secara umum, dapat menulisnya ke file, dan ke database, dan kirim ke seseorang melalui Internet, tetapi untuk saat ini kami akan menulis semuanya ke file. Anda dapat mengarahkan output dengan mengubah konstruktor objek (mis. tidak meneruskan nama file dan penyandiannya selama inisialisasi, tetapi objek yang merupakan aliran data ). Saya pikir saya terlalu terburu-buru, jadi pertama-tama mari kita lihat kode yang bertanggung jawab untuk menulis data ke file XML kita.

String NamaFile = "c:\\demo.xml"; XmlTextWriter xml = new XmlTextWriter(FileName, System.Text.Encoding.Unicode); xml.Formatting = Memformat.Indentasi; xml.WriteStartDocument(); xml.WriteStartElement("rootelement"); untuk (int i = 0; i< 10; i++) { xml.WriteStartElement("subelement"); xml.WriteAttributeString("attrib1", "value1"); xml.WriteAttributeString("attrib2", i.ToString()); for (int j = 0; j < 10; j++){ xml.WriteStartElement("subsubelement"); xml.WriteAttributeString("attr", j.ToString()); xml.WriteEndElement(); } xml.WriteEndElement(); } xml.WriteEndElement(); xml.WriteEndDocument(); xml.Close();

Baris pertama, menurut saya, cukup jelas - ini hanya catatan nama file yang akan kita simpan datanya. Selanjutnya, kami membuat objek bertipe XmlTextWriter (disebut, seperti yang Anda lihat, xml), dan dengan itu kami akan melakukan semua operasi lebih lanjut. Perhatikan bahwa saat membuat objek, kami juga menentukan pengkodean yang akan digunakan untuk menulis XML: dalam contoh kami, ini adalah Unicode. Baris berikutnya, secara umum, tidak diperlukan, tetapi itu akan membuat dokumen XML kita, seperti yang mereka katakan, dapat dibaca manusia, yaitu, menambahkan indentasi yang diperlukan dan memecahnya menjadi beberapa baris. Tanpa ini, seluruh dokumen akan ditulis dalam satu baris, yang, meskipun menghemat ruang, praktis tidak cocok untuk pengeditan manual.

Penulisan dokumen dimulai dengan panggilan ke metode WriteStartDocument() dari objek xml kita. Baris yang mengikutinya menambahkan elemen root "rootelement" ke dokumen XML kita (ingat, untuk dokumen XML, elemen root harus ada dalam satu instance). Selanjutnya, dalam satu lingkaran, kami menambahkan sepuluh elemen lagi yang tidak membawa muatan semantik apa pun ke dokumen XML kami, yang masing-masingnya kami tetapkan dua atribut dan sepuluh subelemen lagi. Harap perhatikan bahwa kita dapat menambahkan angka ke string tanpa mengonversi data secara eksplisit, tetapi jika angka harus benar-benar membentuk string, maka harus dikonversi secara eksplisit dengan metode ToString(). Perhatikan juga bahwa kita harus secara eksplisit menutup setiap elemen dokumen XML kita, lalu seluruh dokumen.

Sekarang dokumen XML kita telah berhasil ditulis, mari kita lihat bagaimana kita dapat membaca data darinya.


Membaca data

Tambahkan komponen listBox ke formulir aplikasi Anda (kecuali, tentu saja, itu adalah konsol) sehingga Anda dapat melacak hasil membaca file XML. Nah, jika program Anda adalah konsol, maka Anda dapat dengan mudah mengarahkan hasilnya ke konsol.

Seperti biasa, pertama-tama kita akan mengenal kode programnya, lalu kita akan melihat apa sebenarnya yang dilakukan kode ini.

XmlTextReader xml = new XmlTextReader(NamaFile); xml.WhitespaceHandling = WhitespaceHandling.None; int i = 0; while (xml.Read())( if ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "subelement")) ( listBox1.Items.Add("subelement " + i + " ditemukan") ; i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); listBox1.Items.Add(" " + xml.GetAttribute("attrib2")); while (xml.Read()&( xml.Name == "subsubelement"))( listBox1.Items.Add(" " + xml.GetAttribute("attr")); ) ) ) xml.Close();

Untuk membaca, seperti yang Anda ketahui, kami menggunakan kelas lain, yaitu XmlTextReader. Itu berada di namespace yang sama dengan kelas yang kami gunakan untuk menulis data. Pada baris pertama, kami membuat instance XmlTextReader bernama xml (di sini kami berasumsi bahwa variabel FileName telah ditentukan oleh kami sebelumnya) Untuk melewati baris kosong, jika terjadi dengan cara yang tidak dapat dipahami dalam file XML yang baru kami buat, kami menggunakan baris berikut dalam cuplikan kode di atas. Variabel i digunakan untuk menghitung jumlah elemen "subelemen" yang ditemukan dalam file XML dari mana data sedang dibaca.

Berikutnya adalah siklus membaca langsung data dari file. Metode Read() membaca elemen berikutnya dari dokumen XML, dan setelah membacanya, kami memeriksa apa yang sebenarnya kami baca. Jika memang itu adalah "subelemen", maka kami menambahkan informasi tentang elemen yang dibaca ke listBox1, menambahkan variabel yang berisi jumlah elemen yang dibaca, dan kemudian membaca atribut elemen tersebut. Setelah membaca atribut, kami mengatur loop terpisah untuk membaca subelemen "subelement" (perhatikan bahwa kami tidak memerlukan XmlTextReader terpisah untuk ini) dan atribut dari subelemen ini. Seperti sebelumnya, kami memasukkan semua informasi yang telah dibaca ke dalam listBox1 untuk mengontrol bacaan yang benar.

Saat membaca file XML, dengan cara yang sama seperti saat menulisnya, saat membuat XmlTextReader "a, Anda dapat menentukan aliran dari mana pembacaan akan dilakukan sebagai parameter, dan kemudian dimungkinkan untuk membaca tidak hanya dari file, tetapi juga dari sumber lain , contoh yang telah saya berikan di atas. Satu fitur berguna dari kelas XmlTextReader harus diperhatikan: saat membaca, ini tidak memuat seluruh dokumen XML yang dapat dibaca ke dalam memori, jadi lebih mudah menggunakannya untuk mem-parsing dokumen XML besar (misalnya, database XML).


Di balik layar

Secara umum, contoh yang baru saja kita analisis terlalu sederhana untuk proyek nyata. Saat ini, saat membaca dokumen XML, biasanya divalidasi menggunakan DTD, XML Schema, atau Relax NG. Validasi adalah pemeriksaan bahwa markup dokumen XML sesuai dengan beberapa standar yang dijelaskan dalam file eksternal. Validasi diperlukan agar verifikasi dokumen tidak tertanam dalam algoritma program, tetapi dapat berubah sesuka hati ketika mengubah format data tanpa memperbarui kode program yang membaca atau menulis data. Sayangnya, sekarang kami tidak punya waktu untuk menganalisis validasinya, karena seperti yang Anda pahami, volume artikel surat kabar memiliki batasan tertentu.

Poin praktis lain yang menarik dan berguna terkait bekerja dengan data XML adalah transformasi data XSL. Transformasi ini diterapkan pada data saat ditampilkan pada halaman HTML dan, pada kenyataannya, hanyalah penerapan template halaman web tertentu ke file XML dengan beberapa data. Karena bagian terbesar dari penggunaan data XML saat ini dengan satu atau lain cara jatuh di World Wide Web, akan sangat, sangat baik untuk mempertimbangkan transformasi XSL.

Jadi, menurut saya artikel ini akan memiliki kelanjutan - tetapi, tentu saja, hanya jika Anda sendiri (yaitu, pembaca Berita Komputer) menanyakannya di forum atau melalui surat ke alamat email saya. Untuk saat ini, tentang penggunaan XML pada aplikasi .NET, mungkin hanya itu saja. Semoga informasi ini bermanfaat bagi Anda.