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:
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.
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:
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:-
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. '
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.
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....
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.
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
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:
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:
Dikembangkan
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:
body="Jangan lupakan saya hujung minggu ini!">
Atribut XML untuk metadata
Jangan lupa saya hujung minggu ini!
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:
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
Contoh No. 2
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:
Tarikh direkodkan sebagai elemen:
Tarikh ditulis sebagai elemen lanjutan(Pada pendapat saya pilihan terbaik):
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:
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
Program Kelas ( Nama fail rentetan statik = @"C:\atr\1.xml"; Senarai Isih statik
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