Atribut tag XML. Atribut XML. Elemen XML. Elemen XML kosong dan tidak kosong

Elemen dan atribut dalam Skema XML

Sebagai tambahan kepada kemungkinan yang kaya untuk menentukan jenis data XML Skema termasuk perbendaharaan kata yang kaya untuk menentukan struktur dokumen dan elemen serta atribut yang dibenarkan.

– Kandungan mudah. Elemen hanya mengandungi teks (walaupun, seperti yang dibincangkan dalam perenggan sebelumnya, teks boleh dihadkan kepada data jenis berasingan, seperti tarikh atau nilai angka). Kandungan jenis ini ditakrifkan menggunakan elemen simpleContent.

- Hanya elemen. Elemen mengandungi hanya elemen bersarang. Kandungan jenis ini ditakrifkan menggunakan elemen complexType.

– Kandungan campuran . Elemen boleh mengandungi kedua-dua kandungan teks dan elemen bersarang. Skema XML memerlukan urutan elemen dan kandungan teks ditakrifkan dengan ketat, dan dokumen yang sah mesti mematuhi urutan tersebut.

– Kandungan kosong . Elemen hanya mengandungi atribut dan tiada kandungan teks. Skema XML mentafsir elemen seperti kes khas kandungan unsur sahaja tanpa unsur yang diisytiharkan.

– Sebarang kandungan . Elemen boleh kosong, mengandungi elemen bersarang dan/atau teks. Kandungan jenis ini ditakrifkan menggunakan elemen anyType.

Ini jenis asas elemen boleh ditentukan dalam pengisytiharan elemen skema. Anda juga boleh menentukan bahawa elemen mungkin muncul beberapa kali dalam dokumen, dan menetapkan minimum dan jumlah maksimum kejadian. Seperti SQL, Skema XML menyokong nilai elemen NULL, menunjukkan bahawa kandungan elemen tidak diketahui. Dalam terminologi XML nilai ini dipanggil nil , tetapi maknanya sama. Menyokong nilai ini memudahkan pemindahan data antara XML dan lajur pangkalan data yang mungkin mengandungi nilai NULL.

Skema XML membolehkan anda mentakrifkan kumpulan unsur logik yang biasanya digunakan bersama dan memberikan nama tersuai kepada kumpulan itu. Kumpulan ini boleh dimasukkan dalam pengisytiharan elemen seterusnya secara keseluruhan. Elemen pengelompokan menjadikan strukturnya lebih fleksibel. Kumpulan boleh menentukan susulan elemen yang mesti ada dalam dokumen dalam susunan tertentu. Atau ia mungkin mentakrifkan satu set elemen yang mana hanya satu elemen mesti ada dalam dokumen.

Pilihan serupa tersedia untuk mengurus atribut. Atribut individu boleh ditakrifkan sebagai sama ada diperlukan atau pilihan. Anda boleh menetapkan nilai lalai untuk atribut, yang akan digunakan jika nilai untuk atribut itu tidak ditentukan. Anda boleh menentukan nilai atribut tetap, yang merupakan nilai tetap untuk atribut itu. Anda boleh mentakrifkan nama kumpulan atribut yang sentiasa digunakan bersama; selepas itu, untuk menentukan kumpulan atribut bagi elemen skema seterusnya, cukup untuk menentukan nama kumpulan ini sahaja.

Di tempat kerja kami diminta membuat fail XML untuk memindahkan data kepada yang lain aplikasi kendiri, yang kemudiannya akan mencipta fail XML kedua untuk kembali mengemas kini beberapa data kami. Semasa proses kami berbincang dengan pasukan permohonan lain Struktur XML fail.

Sampel yang saya temui pada dasarnya kelihatan seperti ini:

Pasukan lain menyatakan bahawa ini bukan standard industri dan atribut hanya boleh digunakan untuk metadata. Mereka menawarkan:

sesuatu sesuatu sesuatu sesuatu sesuatu

Sebab saya menganggap yang pertama adalah kerana saiznya fail yang dibuat lebih kurang. Terdapat kira-kira 80,000 elemen yang akan berada dalam fail semasa pemindahan. Malah, tawaran itu sebenarnya tiga kali ganda daripada apa yang saya tawarkan. Saya sedang mencari "standard industri" misteri yang disebutkan, tetapi yang paling dekat saya dapati ialah ini Atribut XML yang sepatutnya hanya digunakan untuk metadata, tetapi mengatakan bahawa perdebatan adalah mengenai apa sebenarnya metadata.

Selepas penerangan yang panjang (maaf), bagaimana anda menentukan metadata itu, dan apabila mereka bentuk struktur dokumen XML, bagaimanakah anda harus memutuskan masa untuk menggunakan atribut atau elemen?

20 jawapan

Saya menggunakan peraturan ini:

  • Atribut ialah sesuatu yang berdikari, i.e. warna, id, nama.
  • Unsur ialah sesuatu yang mempunyai atau boleh mempunyai atribut sendiri atau mengandungi unsur lain.

Jadi dekat awak. Saya akan melakukan sesuatu seperti:

EDIT: dikemas kini contoh asal, berdasarkan maklum balas di bawah.

sesuatu XYX YYZ

Beberapa masalah dengan atribut:

  • atribut tidak boleh mengandungi berbilang nilai ( elemen kanak-kanak boleh)
  • atribut bukan sahaja boleh diperluaskan (untuk perubahan masa hadapan)
  • atribut tidak boleh menerangkan struktur (elemen kanak-kanak boleh)
  • atribut lebih sukar untuk dimanipulasi oleh kod Nilai Atribut
  • tidak mudah untuk diuji terhadap DTD

Jika anda menggunakan atribut sebagai bekas untuk data, anda akan mendapat dokumen yang sukar dibaca dan diselenggara. Cuba gunakan elemen untuk menerangkan data. Gunakan atribut hanya untuk memberikan maklumat bukan data.

Jangan berakhir seperti ini (ini bukan cara XML harus digunakan):

"XML" bermaksud "bahasa penanda boleh diperluaskan". Bahasa penanda menganggap bahawa data ialah teks, ditandakan dengan metadata tentang struktur atau pemformatan.

XHTML ialah contoh XML yang digunakan seperti yang dimaksudkan:

El Jeffe menegaskan bahawa anda MESTI siapkan projek anda pada hari Jumaat.

Di sinilah perbezaan antara elemen dan atribut dibuat. Elemen teks dipaparkan dalam penyemak imbas dan atribut ialah arahan tentang cara memaparkannya (walaupun terdapat beberapa teg yang tidak berfungsi dengan cara ini).

Kekeliruan timbul apabila XML digunakan bukan sebagai bahasa penanda tetapi sebagai bahasa bersiri data, di mana perbezaan antara "data" dan "metadata" adalah lebih kabur. Jadi pilihan antara elemen dan atribut adalah lebih kurang sewenang-wenangnya, kecuali perkara yang tidak boleh diwakili oleh atribut (lihat jawapan fenster).

XML ialah konvensyen. Pertama, ketepikan sebarang skema XML sedia ada atau konvensyen yang telah ditetapkan dalam komuniti atau industri anda.

Jika anda benar-benar berada dalam situasi untuk menentukan litar anda dari awal, berikut ialah beberapa pertimbangan umum yang harus memaklumkan pilihan anda unsur lwn:

Kandungan berhierarki

  1. pesanan
Boleh rujuk untuk guna semula Untuk manusia Penggunaan melampau membawa kepada kembung dokumen Nama unik atau tidak unik Penghuraian SAX: baca kemudian DTD: tiada nilai lalai

Ini mungkin bergantung pada penggunaan anda. XML yang digunakan untuk mewakili data yang dihasilkan daripada pangkalan data boleh berfungsi dengan baik dan akhirnya meletakkan nilai medan sebagai atribut.

Walau bagaimanapun, XML yang digunakan sebagai pengangkutan mesej selalunya lebih baik untuk digunakan Kuantiti yang besar elemen.

Sebagai contoh, katakan kami mempunyai XML ini seperti yang dicadangkan dalam jawapan:-

XYX YYZ

Sekarang kami ingin menghantar ITEM ke peranti pencetak kod bar, namun terdapat pilihan jenis pengekodan. Bagaimanakah kami mewakili jenis pengekodan yang diperlukan? Tanpa diduga, kami agak lewat menyedari bahawa kod bar bukanlah satu nilai automatik, sebaliknya boleh memenuhi syarat dengan pengekodan yang diperlukan semasa mencetak. '

sesuatu XYX YYZ

Intinya ialah melainkan anda membina beberapa jenis XSD atau DTD bersama ruang nama untuk membetulkan struktur dalam batu, anda mungkin lebih baik mengekalkan pilihan anda.

IMO XML paling berguna apabila ia boleh dibengkokkan tanpa melanggar kod sedia ada.

Atribut pilihan adalah seperti berikut:

  • unik (atribut tidak boleh muncul beberapa kali)
  • pesanan itu tidak penting
  • sifat di atas diwarisi (ini adalah sesuatu yang "semua" model kandungan tidak menyokong dalam bahasa skema semasa)
  • bonus - mereka kurang bertele-tele dan menggunakan kurang lebar jalur, tetapi ini bukan sebab untuk mengutamakan atribut berbanding elemen.

Saya menambah apabila mungkin secara teknikal kerana ada kalanya menggunakan atribut tidak mungkin. Contohnya, memilih set atribut. Contohnya, menggunakan (startDate dan endDate) xor (startTS dan endTS) tidak boleh dilakukan dengan bahasa skema semasa

Jika Skema XML mula membenarkan model kandungan "semua" yang terhad atau dilanjutkan, saya mungkin akan menetapkannya semula

Tiada jawapan universal untuk soalan ini (saya terlibat secara aktif dalam penciptaan spesifikasi W3C). XML boleh digunakan untuk pelbagai tujuan - dokumen teks, data dan kod perisytiharan adalah tiga yang paling biasa. Saya juga menggunakannya sebagai model data. Terdapat aspek aplikasi ini di mana atribut lebih biasa dan lain-lain di mana elemen kanak-kanak lebih semula jadi. Terdapat juga ciri pelbagai alat yang menjadikannya lebih mudah atau lebih mudah digunakan.

XHTML ialah satu kawasan di mana atribut mempunyai penggunaan semula jadi (contohnya dalam class="foo"). Atribut tidak teratur, dan ini mungkin menjadikan pembangunan alat lebih mudah bagi sesetengah orang. Atribut OTOH lebih sukar untuk dimasukkan tanpa skema. Saya juga mendapati atribut bernama (foo:bar="zork") selalunya lebih sukar untuk diurus merentas kit alat yang berbeza. Tetapi lihat beberapa bahasa W3C untuk melihat campuran yang biasa. SVG, XSLT, XSD, MathML adalah beberapa contoh bahasa yang terkenal dan semuanya mempunyai bekalan atribut dan elemen yang kaya. Sesetengah bahasa membenarkan lebih daripada satu cara, mis.

;

bar; ;

Ambil perhatian bahawa mereka TIDAK setara secara sintaksis dan memerlukan sokongan eksplisit dalam alat pemprosesan)

Nasihat saya adalah untuk melihat amalan biasa di kawasan anda dan juga pertimbangkan alat yang boleh anda gunakan.

Akhir sekali, pastikan anda membezakan ruang nama daripada atribut. Sesetengah sistem XML (seperti Linq) mendedahkan ruang nama sebagai atribut API. IMO ianya hodoh dan berkemungkinan mengelirukan.

Orang lain telah melihat cara membezakan atribut daripada elemen, tetapi dari sudut pandangan yang lebih umum, meletakkan segala-galanya ke dalam atribut kerana ia menjadikan XML yang terhasil kurang terdedah kepada ralat.

XML tidak direka bentuk untuk padat, tetapi mudah alih dan boleh dibaca oleh manusia. Jika anda ingin mengurangkan saiz data dalam transit, gunakan sesuatu yang lain (seperti penampan protokol Google).

Ia boleh dipertikaikan satu cara atau yang lain, tetapi rakan sekerja anda betul dalam erti kata bahawa XML harus digunakan untuk "membungkus" atau metadata di sekitar data sebenar. Bagi pihak anda, anda betul bahawa kadangkala sukar untuk menentukan di mana garisan antara metadata dan data semasa memodelkan domain anda dalam XML. Dalam amalan, saya berpura-pura bahawa sesuatu dalam markup disembunyikan, dan hanya data di luar markup dibaca. Adakah dokumen ini masuk akal?

XML terkenal sukar digunakan. Untuk pengangkutan dan penyimpanan, pemampatan amat disyorkan jika anda mampu membeli kuasa pemprosesan. XML memampatkan dengan baik, kadangkala luar biasa baik, kerana kebolehulangannya. Saya telah mempunyai fail besar yang dimampatkan kepada kurang daripada 5% daripada saiz asalnya.

Satu lagi perkara untuk mengukuhkan pandangan anda ialah semasa pasukan lain berhujah tentang gaya (dalam kebanyakan alat XML akan memperlakukan dokumen semua atribut sama mudah seperti dokumen PCDATA semua-#), anda menegaskan kepraktisan. Walaupun gaya tidak boleh diabaikan sepenuhnya, merit teknikal mesti membawa lebih berat.

Gunakan elemen untuk data dan atribut untuk metadata (data tentang data elemen).

Jika elemen muncul sebagai predikat dalam baris pilihan anda, anda mempunyai petanda yang baik bahawa ia sepatutnya menjadi atribut. Begitu juga, jika atribut tidak pernah digunakan sebagai predikat, maka ia mungkin bukan metadata yang berguna.

Ingat bahawa XML harus boleh dibaca mesin, bukan boleh dibaca manusia, dan untuk dokumen besar XML memampatkan dengan sangat baik.

Bagaimana pula dengan menggunakan intuisi kita untuk gaji yang mantap? Biasanya saya dapati ia mudah untuk memikirkan apa itu objek dan apakah atribut objek atau objek yang dirujuknya.

Tidak kira betapa intuitifnya ia masuk akal, kerana objek mesti dimuatkan ke dalam elemen. Atributnya (atau sifat) akan menjadi atribut untuk elemen tersebut dalam xml atau elemen anak dengan atribut.

Saya berpendapat bahawa untuk kes yang lebih mudah, seperti contoh, analogi orientasi objek berfungsi dengan baik untuk menentukan apakah elemen dan atribut elemen.

Soalan berjuta dolar!

Jangan risau tentang prestasi pada mulanya. anda akan terkejut betapa cepatnya penghurai xml yang dioptimumkan akan menyalin fail xml anda. Lebih penting lagi, apakah reka bentuk anda untuk masa hadapan: apabila XML berkembang, bagaimanakah anda akan mengekalkan gandingan longgar dan saling kendali?

lebih khusus, anda boleh menjadikan model kandungan elemen lebih kompleks, tetapi lebih sukar untuk melanjutkan atribut.

Ini kebanyakannya soal keutamaan. Saya menggunakan Elemen untuk mengumpulkan dan atribut untuk data jika boleh kerana saya mendapati ia lebih padat daripada alternatif.

Sebagai contoh, saya lebih suka.....

Daripada....

Rory Becker 30 Travis Illig 32 Scott Hanselman 34

Walau bagaimanapun, jika saya mempunyai data yang tidak boleh dipaparkan dengan mudah di dalam, seperti 20-30 aksara atau mengandungi banyak petikan atau aksara lain yang perlu dilepaskan, saya akan katakan sudah tiba masanya untuk memecahkan elemen... mungkin dengan blok CData.

Seorang pengaturcara yang berminat dengan pelbagai perkara lain. Blog beliau boleh didapati di http://rorybecker.blogspot.com dan beliau di twitter sebagai @RoryBecker Seorang lelaki yang hebat yang telah membantu saya dengan pelbagai maklumat SVn Scott bekerja untuk MS dan mempunyai podcast hebat yang tersedia di http://www.hanselminutes.com

Elemen XML boleh mempunyai atribut, sama seperti HTML.

Atribut direka bentuk untuk mengandungi data khusus untuk elemen tertentu.

Atribut XML mesti disertakan dalam petikan

Nilai atribut mesti sentiasa disertakan dalam tanda petikan. Sama ada bujang atau petikan berganda boleh digunakan.

Untuk jantina seseorang, maka Elemen boleh ditulis seperti berikut:

atau seperti ini:

Jika nilai atribut itu sendiri mengandungi petikan berganda, anda boleh menggunakan petikan tunggal, seperti dalam contoh ini:

atau anda boleh menggunakan entiti aksara:

Elemen XML vs Atribut

Lihat contoh-contoh ini:

Anna
Smith


perempuan
Anna
Smith

Dalam contoh pertama, jantina ialah atribut. Dalam yang kedua, jantina adalah elemen. Kedua-dua contoh memberikan maklumat yang sama.

Tiada peraturan tentang masa untuk menggunakan atribut atau masa untuk menggunakan elemen dalam XML.

Cara kegemaran saya

Tiga dokumen XML berikut mengandungi maklumat yang sama:

Atribut tarikh digunakan dalam contoh pertama:


Tove
Jani

elemen digunakan dalam contoh kedua:


2008-01-10
Tove
Jani

Dikembangkan elemen digunakan dalam contoh ketiga: (INI ADALAH KEGEMARAN SAYA):



2008
01
10

Tove
Jani

Elakkan atribut XML?

Beberapa perkara yang perlu dipertimbangkan apabila menggunakan atribut:

  • atribut tidak boleh mengandungi berbilang nilai (elemen boleh)
  • atribut tidak boleh mengandungi struktur pokok (elemen boleh)
  • atribut tidak mudah diperluaskan (untuk perubahan masa hadapan)

Jangan berakhir seperti ini:

to="Tove" from="Jani" heading="Peringatan"
body="Jangan lupakan saya hujung minggu ini!">

Atribut XML untuk metadata



Tove
Jani
Peringatan
Jangan lupa saya hujung minggu ini!




Jani
Tove
Re: Peringatan
Saya tidak akan



atribut id di atas untuk mengenal pasti nota yang berbeza. Ia bukan sebahagian daripada nota itu sendiri.

Apa yang saya cuba katakan di sini ialah metadata (data tentang data) harus disimpan sebagai atribut dan data itu sendiri harus disimpan sebagai elemen.

Sama seperti dalam HTML, Elemen XML mungkin mempunyai atribut. Dalam kes ini, nilai atribut dalam XML dan peraturan untuk penciptaan mereka dalam banyak cara serupa dengan .

Atribut menyediakan Maklumat tambahan tentang unsur tersebut.

Atribut XML

DALAM Atribut HTML berikan beberapa maklumat tambahan tentang elemen:

Atribut sering memberikan maklumat yang bukan sebahagian daripada data. Dalam contoh di bawah, jenis fail adalah bebas daripada data, tetapi maklumat ini mungkin penting untuk aplikasi yang akan memanipulasi elemen ini:

komputer.gif

Atribut XML mesti disertakan dalam petikan

Nilai atribut mesti sentiasa disertakan dalam tanda petikan. Ini boleh sama ada dua kali ganda atau petikan tunggal. Sebagai contoh, jantina watak boleh ditulis seperti ini:

atau seperti ini:

Jika nilai atribut itu sendiri mengandungi petikan berganda, maka petikan tunggal boleh digunakan. Sebagai contoh:

atau gunakan simbol entiti:

Unsur atau atribut XML

Lihat contoh berikut:

Contoh No. 1

Anna Smith

Contoh No. 2

perempuan Anna Smith

Dalam contoh pertama, jantina ditentukan dalam atribut. Dalam yang kedua, jantina direkodkan sebagai elemen. Kedua-dua contoh memberikan maklumat yang sama.

Tiada peraturan yang mengawal masa untuk menggunakan atribut dan masa untuk menggunakan elemen. Atribut digunakan secara meluas dalam HTML. Dalam XML, pada pendapat saya, adalah lebih baik untuk mengelakkannya dan sebaliknya menggunakan elemen.

Apa yang lebih baik?

Tiga seterusnya dokumen XML mengandungi maklumat yang sama:

Tarikh direkodkan sebagai atribut:

Tove Jani Peringatan

Tarikh direkodkan sebagai elemen:

10/01/2008 Tove Jani Peringatan Jangan lupa tentang saya hujung minggu ini!

Tarikh ditulis sebagai elemen lanjutan(Pada pendapat saya pilihan terbaik):

10 01 2008 Tove Jani Peringatan Jangan lupa tentang saya hujung minggu ini!

Elakkan atribut XML?

Terdapat beberapa masalah apabila menggunakan atribut:

  • atribut tidak boleh mengandungi berbilang nilai (elemen boleh)
  • atribut tidak boleh mengandungi struktur pokok (elemen boleh)
  • atribut sukar untuk dilanjutkan (untuk perubahan masa depan)

Jangan sekali-kali menggunakan binaan berikut:

Atribut XML untuk metadata

Kadangkala elemen diberikan pengecam. Pengecam ini digunakan untuk mengenal pasti elemen XML dengan cara yang sama seperti atribut pengenalan dalam HTML. Contoh berikut menunjukkan ini:

Tove Jani Peringatan Jangan lupa tentang saya hujung minggu ini!

Jani Tove Re: Peringatan Saya tidak akan lupa

Dalam contoh di atas, atribut id digunakan untuk mengenal pasti nota yang berbeza. Maklumat ini bukan sebahagian daripada nota itu sendiri.

Idea utama dari semua yang telah dikatakan ialah metadata (data tentang data) harus ditulis sebagai atribut, dan data itu sendiri sebagai elemen.

Hadirkan untuk perhatian anda kursus baru daripada pasukan The Codeby- "Ujian penembusan Aplikasi Web dari awal." Teori am, penyediaan persekitaran kerja, kabur pasif dan cap jari, Kabur aktif, Keterdedahan, Selepas eksploitasi, Alatan, Kejuruteraan Sosial dan banyak lagi.


Atribut fail XML

Dalam artikel terakhir anda mempelajari cara bekerja dengan elemen dan nod fail XML. Dalam artikel ini, anda akan mempelajari apa itu atribut, dan kami juga akan menganalisis operasi asas dengannya, seperti mencipta, menukar, memadam dan menambah atribut menggunakan bahasa c#.

Seperti yang dinyatakan sebelum ini dalam artikel sebelumnya, elemen fail XML boleh mempunyai sebarang bilangan atribut tidak berulang di mana anda boleh menyimpan pelbagai maklumat. Iaitu, satu elemen tidak boleh mempunyai, sebagai contoh, dua atribut "id", tetapi ia boleh mempunyai beberapa atribut sekaligus: "id", "nama", "kod" dan sebagainya. Ia juga bernilai mengingatinya sifat-sifat fail xml disertakan dalam petikan berganda.

Elemen kereta mengandungi 1 atribut id, yang mempunyai nilai 1.

Elemen kereta mengandungi 2 atribut: id dan kod.

Tidak betul, atribut pendua digunakan.

Jika anda tidak biasa dengan bahasa XML atau tidak tahu apa itu xml dom, maka saya nasihatkan anda membaca artikel: .

Mari kita teruskan untuk berlatih.

Mula-mula anda perlu membuat satu kosong yang mengandungi satu elemen akar .

Hasilnya sepatutnya kelihatan seperti ini

Sekarang mari kita pertimbangkan operasi asas dengan atribut.

Cara membuat atribut fail XML

Untuk mencipta atribut baharu Anda boleh menggunakan kaedah SetAttribute kelas System.Xml.XmlElement, yang membolehkan anda mencipta dan menukar atribut elemen.

Dalam contoh pertama, kami akan mencipta elemen "garaj" dengan atribut "id", yang akan kami berikan nilai 3.

Program Kelas ( Nama fail rentetan statik = @"C:\atr\1.xml"; lompang statik Utama(args rentetan) ( XmlDocument xmlDoc = XmlDocument(); xmlDoc.Load(Nama Fail); XmlElement elmGarage = xmlDoc.CreateElement(" garaj"); elmGarage.SetAttribute("id", "3"); xmlDoc.DocumentElement.AppendChild(elmGarage); xmlDoc.Save(fileName); ) )

hasil

Cara mencipta berbilang atribut

Jika anda perlu mencipta lebih daripada satu atribut untuk satu elemen, maka dalam contoh sebelumnya kami hanya menambah baris berikut.

ElmGarage.SetAttribute("id", "3"); elmGarage.SetAttribute("count", "1"); //Menambahkan elmGarage.SetAttribute("shortCode", "456"); //Ditambah

Kini 3 atribut akan dibuat: "id", "count", "shortCode" dan 3 nilai: 3, 1, 456.

Cara lain.

Kerana atribut xml elemen mempunyai nama dan nilai, maka SortedList sangat sesuai untuk menyimpan data tersebut , dengan T ialah nama atribut K ialah nilai.

Program Kelas ( Nama fail rentetan statik = @"C:\atr\1.xml"; Senarai Isih statik senarai isihan; senarai isihan = Senarai Isih baharu (); lompang statik Utama(args rentetan) ( //isi dengan senarai isihan atribut dan nilai.Tambah("id", "3"); senarai isihan.Tambah("kira", "1"); senarai isih.Tambah("Kod pendek" , "456"); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); //Create elemen baharu garaj XmlElement elmGarage = xmlDoc.CreateElement("garaj"); //Tambah atribut dan nilai padanya foreach (var item dalam senarai isihan) ( elmGarage.SetAttribute(item.Key, item.Value); ) //Tambah elemen baharu kami pada pokok xmlDoc.DocumentElement.AppendChild(elmGarage); //Untuk menyemak, paparkan bilangan atribut yang dicipta Console.WriteLine("Bilangan atribut tambahan: (0)", elmGarage.Attributes.Count); //Save xmlDoc.Save(fileName); ) )

hasil

Cara menukar nilai atribut fail XML

Untuk menukar nilai atribut elemen, anda boleh menggunakan kaedah SetAttribute yang kami gunakan sebelum ini untuk mencipta atribut.

Program Kelas ( Nama fail rentetan statik = @"C:\atr\1.xml"; lompang statik Utama(args rentetan) ( XmlDocument xmlDoc = XmlDocument baharu(); xmlDoc.Load(Nama Fail); //Jika daripada sifat ini id tiada, maka ia akan dibuat xmlDoc.DocumentElement["garaj"].SetAttribute("id", "5"); xmlDoc.Save(Nama fail); ) )

Cara lain untuk bekerja dengan atribut ialah bekerja dengan kelas. Dalam contoh kami, kami mula-mula mendapatkan semua atribut elemen garaj, dan kemudian menggunakan kaedah GetNamedItem, yang mencari atribut yang kami perlukan. Kemudian, menggunakan sifat InnerText, kami menukar nilai atribut.

Program Kelas ( static string fileName = @"C:\atr\1.xml"; static void Main(string args) ( XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); //Dapatkan semua atribut garaj elemen XmlAttributeCollection atrCol; atrCol = xmlDoc.DocumentElement["garaj"].Attributes; //ubah nilai atribut id atrCol.GetNamedItem("id").InnerText = "5"; xmlDoc.Save(fileName); ) )

hasil

Contoh berikut menunjukkan cara anda boleh memberikan nilai yang sama kepada semua atribut bagi satu elemen. Pertama, kami juga mendapat semua atribut, kemudian menggunakan kaedah Item(i) anda boleh bergerak melalui atribut menggunakan indeks, seperti dalam tatasusunan biasa.

Program Kelas ( static string fileName = @"C:\atr\1.xml"; statik void Utama(string args) ( XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); XmlAttributeCollection atrCol = xmlDoc. DocumentElement[" garaj"].Atribut; untuk (int i = 0; i< atrCol.Count; i++) { atrCol.Item(i).InnerText = "8"; } xmlDoc.Save(fileName); } }

hasil

Jika anda perlu menetapkan setiap atribut makna yang berbeza, maka anda boleh melakukan ini.

Sebagai contoh, mari kita buat tatasusunan, biarkan ia mengandungi dua nombor, setiap nombor ialah nilai baharu untuk atribut: “id” dan “count” bagi elemen “garaj”.

Program Kelas ( static string fileName = @"C:\atr\1.xml"; static int arValues ​​​​= (77, 76); static void Main(string args) ( XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load (Nama fail ); XmlAttributeCollection atrCol = xmlDoc. DocumentElement["garaj"]. Atribut; untuk (int i = 0; i< atrCol.Count; i++) { atrCol.Item(i).InnerText = arValues[i].ToString(); } xmlDoc.Save(fileName); } }

hasil

Bagaimana untuk mengalih keluar atribut elemen dalam fail XML

Kami belajar cara mencipta dan menukar atribut. Jika anda tidak memahami beberapa baris kod, anda boleh membaca artikel: di mana segala-galanya diterangkan secara terperinci.

Kepada keluarkan atribut, anda perlu melaksanakan kaedah RemoveAt, melepasi indeks atribut untuk dialih keluar sebagai parameter.

Program Kelas ( static string fileName = @"C:\atr\1.xml"; static void Main(string args) ( XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); //Dapatkan semua atribut garaj elemen XmlAttributeCollection atrCol = xmlDoc.DocumentElement["garaj"].Attributes;atrCol.RemoveAt(1);xmlDoc.Save(fileName); ) )

hasil

Bagaimana untuk mengalih keluar berbilang atribut

Jika anda perlu mengalih keluar kedua-dua atribut "id" dan "count" sekaligus atau lebih, maka kaedah RemoveAll sesuai untuk kes ini.

Program Kelas ( static string fileName = @"C:\atr\1.xml"; static void Main(string args) ( XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); //Dapatkan semua atribut garaj elemen XmlAttributeCollection atrCol = xmlDoc.DocumentElement["garaj"].Attributes; //buang kedua-dua id dan kira atribut atrCol.RemoveAll(); xmlDoc.Save(fileName); ) )

hasil

Menambah atribut baharu

Pada akhirnya terdapat satu lagi contoh yang menunjukkan kerja dua kaedah: InsertBefore dan InsertAfter, yang membolehkan tambah atribut baharu elemen fail XML, sama ada sebelum atau selepas beberapa atribut sedia ada.

Program Kelas ( static string strFilename = @"C:\atr\1.xml"; static void Main(string args) ( XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); //Dapatkan semua atribut garaj elemen XmlAttributeCollection atrCol = xmlDoc. DocumentElement["garaj"].Attributes; //Buat atribut baharu XmlAttribute atrDate = xmlDoc.CreateAttribute("date"); atrDate.Value = DateTime.Now.ToShortDateString(); //Add atribut atrCol ke koleksi .Append(atrDate); //Alih keluar ulasan di sebelah kaedah yang diingini. //Sisipkan atribut tarikh selepas atribut id //atrCol.InsertBefore(atrCol["id"], atrDate); // Masukkan atribut tarikh sebelum atribut id //atrCol. InsertAfter(atrCol["id"], atrDate); xmlDoc.Save(strFilename); ) )

hasil

Tambahkan pada koleksi

Bagaimana untuk mendapatkan nilai atribut fail xml untuk beberapa nod

Memandangkan fail xml yang mengandungi dua nod bernama kereta, yang seterusnya mempunyai satu atribut id setiap satu.

Tugas: dapatkan nilai atribut id semua nod kereta.

Program Kelas ( static string fileName = @" C:\example\garage.xml"; static void Main(string args) ( XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); //Dapatkan semua nod yang mempunyai nama kereta XmlNodeList nodeList= xmlDoc.GetElementsByTagName("kereta"); //Keluarkan nilai atribut id semua nod yang ditemui car foreach (XmlNode xmlnode dalam nodeList) ( Console.WriteLine(xmlnode.Attributes["id"] .InnerText); ) Console .ReadLine(); ) //Tiada penjimatan diperlukan)

Keputusan:

Bagaimana untuk menukar nilai atribut fail xml untuk beberapa nod

Tugas: meningkatkan nilai semasa atribut id untuk setiap nod dengan nilai tertentu.

Program Kelas ( static string fileName = @"C:\example\garage.xml"; static void Main(string args) ( //Nilai yang mana kita akan meningkatkan nilai semasa atribut int changeValue = 900; //temporary pembolehubah untuk menyimpan nilai baharu int newValue = 0; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); //Dapatkan semua nod dengan nama kereta XmlNodeList nodeList= xmlDoc.GetElementsByTagName("kereta"); foreach (XmlNode xmlnode dalam nodeList) ( //Dapatkan nilai semasa atribut id //dan tingkatkannya, sebagai contoh, sebanyak 900. newValue = int.Parse(xmlnode.Attributes["id"].InnerText) + changeValue; / /Masukkan nilai baharu xmlnode.Attributes.InnerText = newValue. ToString(); ) //Save changes xmlDoc.Save(fileName); ) )

* Untuk koleksi Atribut, dalam kurungan anda boleh menentukan kedua-dua nama atribut Atribut[“id”] dan Atribut indeks