c-də xml-i emal etməyin yolları. XML sənədini necə açmaq olar - XML ​​faylları ilə işləmək xüsusiyyətləri. Uşaq elementləri ilə XML elementinin yaradılması




Genişlənən İşarələmə Dili (XML). Bunlar, həqiqətən, sənədin strukturunu və digər xüsusiyyətlərini təsvir etmək üçün xüsusi etiketlərdən istifadə edən mətn fayllarıdır.

XML nədir

XML insanlar və maşınlar tərəfindən oxuna bilən sənədlər üçün kodlaşdırma sintaksisini müəyyən etmək üçün Ümumdünya Veb Konsorsiumu (W3C) tərəfindən yaradılmış işarələmə dilidir. Bunu sənədin strukturunu, eləcə də sənədin necə saxlanacağını və daşınacağını müəyyən edən etiketlərlə edir.

Onu müqayisə etməyin ən asan yolu, tanış ola biləcəyiniz başqa işarələmə dili ilə, yəni hipermətn işarələnməsi(HTML) veb səhifələri kodlaşdırmaq üçün istifadə olunur. HTML veb-səhifədəki məzmunun formatını təsvir edən əvvəlcədən təyin edilmiş işarələmə simvollarından (qısa kodlar) istifadə edir.

Bununla belə, XML arasındakı fərq onun genişləndirilə bilməsidir. XML-də HTML kimi əvvəlcədən təyin edilmiş işarələmə dili yoxdur. Bunun əvəzinə, XML istifadəçilərə məzmunu təsvir etmək üçün öz işarələmə simvollarını yaratmağa imkan verir, məhdudiyyətsiz və özünü müəyyən edən simvollar toplusunu təşkil edir.

Əslində, HTML məzmunu təqdim etməyə diqqət yetirən bir dildir, XML isə məlumatları saxlamaq üçün istifadə olunan xüsusi məlumat təsviri dilidir.

XML tez-tez yüzlərlə olan digər sənəd formatları üçün əsas kimi istifadə olunur. Burada bilmək istəyə biləcəyiniz bir neçə şey var:

  • RSS və ATOM proqramların lentləri necə idarə etməli olduğunu təsvir edir.
  • Microsoft .NET konfiqurasiya faylları üçün XML-dən istifadə edir.
  • Microsoft Office sənəd strukturu üçün əsas kimi XML-dən istifadə edir.

Beləliklə, əgər sizin XML faylınız varsa, o, mütləq hansı proqram üçün olduğunu sizə bildirmir. Bununla belə, XML fayllarını inkişaf etdirmədiyiniz halda bu barədə narahat olmaq lazım deyil.

XML faylını necə açmaq olar

XML faylını birbaşa açmağın bir neçə yolu var. Siz onları istənilən mətn redaktoru ilə aça və redaktə edə, istənilən veb brauzerlə baxa və ya onlara baxmaq, redaktə etmək və hətta başqa formatlara çevirmək imkanı verən vebsaytdan istifadə edə bilərsiniz.

XML ilə müntəzəm işləyərkən mətn redaktorundan istifadə edin

XML faylları sadə mətn faylları olduğundan, onları istənilən mətn redaktoru ilə açmaq olar. Bununla belə, Notepad kimi bir çox mətn redaktorları sadəcə olaraq XML fayllarını düzgün strukturunda göstərmək üçün nəzərdə tutulmayıb. Bu, XML faylının məzmunu ilə tez tanış olmaq üçün faydalı ola bilər. Ancaq onlarla işləmək üçün daha rahat vasitələr var.


XML faylına baxmaq üçün veb-brauzerdən istifadə

XML faylını redaktə etmək lazım deyilsə, sadəcə məzmuna baxmaq lazımdırsa, brauzeriniz bu tapşırığın öhdəsindən gələ bilər. Üstəlik, veb brauzeriniz çox güman ki, artıq standart XML görüntüləyicisi kimi qurulub. Beləliklə, XML faylına iki dəfə klikləmək onu brauzerdə açmalıdır.

Əgər yoxsa, faylı hər hansı digər proqramla açmaq üçün seçimləri tapmaq üçün üzərinə sağ klikləyə bilərsiniz. Sadəcə proqramlar siyahısından veb brauzerinizi seçin.

Fayl açıldığında, yaxşı strukturlaşdırılmış məlumatları görməlisiniz. Bu, Notepad++ proqramında əldə etdiyiniz rəng görünüşü qədər gözəl deyil, lakin notepaddan qat-qat yaxşıdır.

XML faylları üçün onlayn redaktordan istifadə

Əgər təsadüfi XML faylını redaktə etmək istəyirsinizsə və yeni mətn redaktoru yükləmək istəmirsinizsə və ya xml faylını başqa bir formata çevirin, pulsuz bir neçə layiqli onlayn XML redaktorları var.

TutorialsPoint.com , XMLGrid.net və CodeBeautify.org - XML ​​fayllarına baxmaq və redaktə etmək imkanı verir. Redaktə başa çatdıqdan sonra siz dəyişdirilmiş XML faylını yükləyə və ya hətta onu başqa formata çevirə bilərsiniz.

Nümunə kimi CodeBeautify.org-dan istifadə edək. Səhifə üç hissəyə bölünür. Solda işlədiyiniz XML faylı var. Ortada bir neçə funksiya tapa bilərsiniz. Sağda, seçə biləcəyiniz bəzi seçimlərin nəticələrini görəcəksiniz.

Məsələn, aşağıdakı şəkildə, tam XML faylımız soldadır və ortada Ağac Görünüşü düyməsini kliklədiyimiz üçün nəticə paneli ağac görünüşünü göstərir.

XML faylını kompüterinizdən yükləmək üçün Gözdən keçir düyməsini və ya İnternet mənbəyindən XML-i əldə etmək üçün URL Yüklə düyməsini istifadə edin.

Ağac Görünüşü düyməsi bütün teqlər narıncı rənglə vurğulanmış və etiketlərin sağ tərəfində atributlarla birlikdə nəticələr panelində yaxşı formatlaşdırılmış ağac strukturunda məlumatları göstərir.

Beatify məlumatlarınızı səliqəli, oxunması asan şəkildə göstərir.

Küçült düyməsi ən az boşluqdan istifadə etməklə məlumatlarınızı göstərir. Bu funksiya hər bir məlumat parçasını bir sətirdə yerləşdirəcək. Bu, faylı kiçikləşdirməyə çalışarkən faydalı olacaq, bu da bir qədər yerə qənaət edəcəkdir.

Nəhayət, siz XML-i JSON formatına çevirmək üçün XML-dən JSON düyməsindən, verilənləri vergüllə ayrılmış dəyər faylı kimi saxlamaq üçün CSV-ə ixrac et düyməsini və ya faylda etdiyiniz hər hansı dəyişikliyi yükləmək üçün Yükləmə düyməsini istifadə edə bilərsiniz. yeni XML faylı. .

Yəqin ki, XML haqqında eşitmisiniz və onu təşkilatınızda istifadə etməyin bir çox səbəbi var. Bəs XML tam olaraq nədir? Bu məqalə XML-in nə olduğunu və necə işlədiyini izah edir.

Bu məqalədə

İşarələmə, işarələmə və etiketlər

XML-i başa düşmək üçün məlumatları necə etiketləyə biləcəyinizi xatırlamaq faydalıdır. Sənədlər əsrlər boyu insanlar tərəfindən yaradılıb və bütün bu müddət ərzində insanlar sənədlərdə qeydlər aparıblar. Məsələn, müəllimlər çox vaxt şagirdlərin işini abzasların yerdəyişməsi, cümlənin daha aydın olması, orfoqrafik xətaların düzəldilməsi və s. zəruriliyini göstərmək üçün qeyd edirlər.Sənədin işarələnməsi informasiyanın strukturunu, mənasını və görünüşünü müəyyən edə bilər. Əgər siz heç vaxt Microsoft Office Word proqramında düzəlişlərdən istifadə etmisinizsə, onda siz kompüterləşdirilmiş annotasiya forması ilə tanışsınız.

İnformasiya texnologiyaları dünyasında “tagging” termini “markup” termininə çevrilib. İşarələmə strukturu, vizual görünüşünü və XML vəziyyətində məlumatın mənasını müəyyən etmək üçün etiketlər (və ya bəzən işarələr) adlanan kodlardan istifadə edir.

Bu məqalənin HTML mətni kompüter işarələməsinin istifadəsinə yaxşı nümunədir. Microsoft Internet Explorer-də bu səhifəni sağ klikləsəniz və seçin HTML koduna baxın kimi oxunaqlı mətn və HTML teqləri görəcəksiniz

. HTML və XML sənədlərində teqləri tanımaq asandır, çünki onlar bucaqlı mötərizələr içərisindədirlər. Bu məqalənin mənbə kodunda HTML teqləri hər bir abzasın başlanğıcını və sonunu təyin etmək kimi bir çox funksiyanı yerinə yetirir (

...

) və təsvirlərin yeri.

XML-in fərqli xüsusiyyətləri

HTML və XML formatındakı sənədlər etiketlərə əlavə edilmiş məlumatları ehtiva edir, lakin iki dil arasındakı oxşarlıqlar burada bitir. HTML formatında teqlər verilənlərin təqdimatını - başlıqların yerini, paraqrafın başlanğıcını və s. müəyyən edir. XML formatında teqlər verilənlərin strukturunu və mənasını - onun nə olduğunu müəyyənləşdirir.

Verilənlərin strukturunu və mənasını təsvir edərkən onlardan bir neçə yolla təkrar istifadə etmək mümkün olur. Məsələn, hər bir elementin aydın şəkildə müəyyən edildiyi satış məlumatları blokunuz varsa, siz satış hesabatına yalnız lazımi elementləri yükləyə və digər məlumatları mühasibat bazasına köçürə bilərsiniz. Başqa sözlə desək, siz bir sistemdən məlumat yaratmaq və onu XML formatında etiketləmək üçün istifadə edə, sonra isə müştəri platformasından və ya əməliyyat sistemindən asılı olmayaraq bu məlumatları istənilən başqa sistemdə emal edə bilərsiniz. Bu qarşılıqlı fəaliyyət XML-i ən məşhur məlumat mübadiləsi texnologiyalarından birinin əsasına çevirir.

İşləyərkən aşağıdakıları nəzərə alın:

    HTML XML əvəzinə istifadə edilə bilməz. Bununla belə, XML məlumatları HTML teqlərinə bükülə və veb səhifələrdə göstərilə bilər.

    HTML xüsusiyyətləri bütün istifadəçilər üçün ümumi olan əvvəlcədən təyin edilmiş etiketlər dəsti ilə məhdudlaşır.

    XML qaydaları məlumatı və onun strukturunu təsvir etmək üçün lazım olan hər hansı teqləri yaratmağa imkan verir. Deyək ki, siz ev heyvanları haqqında məlumat saxlamalı və paylaşmalısınız. Bunu etmək üçün aşağıdakı XML kodunu yarada bilərsiniz:

    İzzi siam 6 bəli yox Izz138bod Colin Wilcox

Gördüyünüz kimi, XML teqləri hansı məlumatlara baxdığınızı aydınlaşdırır. Məsələn, aydındır ki, bu, bir pişik haqqında məlumatdır və siz onun adını, yaşını və s. asanlıqla müəyyən edə bilərsiniz.Demək olar ki, hər hansı bir məlumat strukturunu təyin edən teqlər yaratmaq imkanı ilə XML genişlənir.

Lakin bu misaldakı teqləri HTML faylındakı teqlərlə qarışdırmayın. Məsələn, yuxarıdakı XML mətni HTML faylına yapışdırılıb brauzerdə açılırsa, nəticələr belə görünəcək:

Izzy Siamese 6 bəli yox Izz138bod Colin Wilcox

Veb brauzer XML teqlərinə məhəl qoymayacaq və yalnız məlumatları göstərəcək.

Yaxşı formalaşmış məlumatlar

Yəqin ki, IT-də kiminsə "yaxşı formalaşmış" XML faylı haqqında danışdığını eşitmisiniz. Yaxşı formalaşmış XML faylı çox ciddi qaydalara əməl etməlidir. Bu qaydalara əməl etmirsə, XML işləmir. Məsələn, əvvəlki misalda hər bir başlanğıc teqinin müvafiq son etiketi var, ona görə də bu nümunə yaxşı formalaşmış XML faylı üçün qaydalardan birinə əməl edir. Fayldan hər hansı bir etiketi silsəniz və onu Office proqramlarından birində açmağa çalışsanız, səhv mesajı alacaqsınız və belə fayldan istifadə edə bilməyəcəksiniz.

Düzgün formalaşdırılmış XML faylı yaratmaq qaydalarını bilməyə ehtiyac yoxdur (baxmayaraq ki, onları başa düşmək asandır), lakin unutmayın ki, yalnız yaxşı formalaşmış XML verilənləri digər proqram və sistemlərdə istifadə edilə bilər. XML faylı açılmırsa, ehtimal ki, səhv formalaşdırılıb.

XML platformadan müstəqildir, yəni XML-dən istifadə etmək üçün qurulmuş hər hansı proqram hardware və ya əməliyyat sistemindən asılı olmayaraq XML məlumatlarını oxuya və emal edə bilər. Məsələn, düzgün XML teqləri ilə siz əsas kadrdan alınan məlumatları açmaq və emal etmək üçün iş masası proqramından istifadə edə bilərsiniz. XML məlumatlarını kimin yaratdığından asılı olmayaraq, müxtəlif Office proqramlarında verilənlərlə işləmək mümkündür. Qarşılıqlı işləmə qabiliyyətinə görə XML verilənlər bazası və istifadəçi kompüterləri arasında məlumat mübadiləsi üçün ən populyar texnologiyalardan birinə çevrilmişdir.

Yaxşı formalaşmış etiketli məlumatlara əlavə olaraq, XML sistemləri adətən iki əlavə komponentdən istifadə edir: sxemlər və çevrilmələr. Aşağıdakı bölmələr onların necə işlədiyini təsvir edir.

Sxem

"Sxem" terminindən qorxmayın. Sxem sadəcə olaraq XML məlumat faylının məzmunu üçün qaydaları ehtiva edən XML faylıdır. Sxem faylları adətən .xsd uzantısına malikdir, XML məlumat faylları isə .xml genişlənməsindən istifadə edir.

Sxemlər proqramlara məlumatları təsdiq etməyə imkan verir. Onlar verilənlərin strukturunu formalaşdırır və onu yaradan və digər insanlar üçün başa düşülən edir. Məsələn, istifadəçi tarix sahəsinə mətn kimi etibarsız məlumatları daxil edərsə, proqram istifadəçidən onu düzəltməyi təklif edə bilər. XML faylındakı məlumatlar sxemdəki qaydalara uyğun gəlirsə, onu oxumaq, şərh etmək və emal etmək üçün XML-i dəstəkləyən istənilən proqramdan istifadə edə bilərsiniz. Məsələn, aşağıdakı şəkildə göstərildiyi kimi, Excel məlumatları təsdiqləyə bilər CAT sxeminə uyğunluq üçün.

Sxemlər mürəkkəb ola bilər və bu məqalədə onların necə yaradılacağını izah etmək mümkün deyil. (Ehtimal ki, təşkilatınızın bunu necə edəcəyini bilən İT işçiləri də var.) Bununla belə, diaqramların necə göründüyünü bilmək faydalıdır. Aşağıdakı sxem teqlər dəsti üçün qaydaları müəyyən edir ... :

Məsələnin mənası yoxdursa, narahat olmayın. Yalnız aşağıdakılara diqqət yetirin:

    Nümunə sxemindəki daxili elementlər bəyannamələr adlanır. Heyvan haqqında əlavə təfərrüatlar, məsələn, onun rəngi və ya xüsusi xüsusiyyətləri tələb olunarsa, İT şöbəsi sxemə müvafiq bəyannamələr əlavə edərdi. XML sistemi biznes ehtiyacları inkişaf etdikcə dəyişə bilər.

    Bəyannamələr məlumatların strukturuna nəzarət etmək üçün güclü bir yoldur. Məsələn, reklam kimi etiketlər deməkdir , yuxarıdakı qaydada olmalıdır. Bəyannamələr həmçinin istifadəçi daxiletmə növlərini yoxlaya bilər. Məsələn, yuxarıdakı sxem pişiyin yaşı üçün müsbət tam ədəd və ALTERED və DECLAWED teqləri üçün boolean (TRUE və ya FALSE) tələb edir.

    XML faylındakı məlumatlar sxemin qaydalarına uyğundursa, o zaman məlumat etibarlı sayılır. XML məlumat faylının sxem qaydalarına uyğunluğunu yoxlamaq prosesi (məntiqi olaraq kifayət qədər) doğrulama adlanır. Sxemlərdən istifadənin böyük üstünlüyü ondan ibarətdir ki, onlar verilənlərin korlanmasının qarşısını ala bilərlər. Sxemlər həmçinin zədələnmiş məlumatların tapılmasını asanlaşdırır, çünki belə bir problem yarandıqda XML faylının işlənməsi dayandırılır.

Transformasiyalar

Yuxarıda müzakirə edildiyi kimi, XML məlumatların səmərəli istifadəsinə və təkrar istifadəsinə də imkan verir. Məlumatların təkrar istifadəsi mexanizmi XSLT transformasiyası (və ya sadəcə çevrilmə) adlanır.

Siz (və ya İT departamentiniz) həmçinin verilənlər bazası kimi arxa sistemlər arasında məlumat mübadiləsi üçün transformasiyalardan istifadə edə bilərsiniz. Fərz edək ki, A verilənlər bazasında satış şöbəsi üçün faydalı olan cədvəldə satış məlumatları var. B verilənlər bazası gəlir və xərc məlumatlarını xüsusi olaraq mühasibat uçotu üçün nəzərdə tutulmuş cədvəldə saxlayır. B verilənlər bazası A verilənlər bazasından məlumatları götürmək və müvafiq cədvəllərə yerləşdirmək üçün transformasiyadan istifadə edə bilər.

Məlumat faylı, sxem və transformasiyanın birləşməsi əsas XML sistemini təşkil edir. Aşağıdakı şəkildə belə sistemlərin işləməsi göstərilir. Məlumat faylı sxem qaydalarına uyğun olaraq yoxlanılır və sonra transformasiya üçün istənilən uyğun şəkildə təqdim olunur. Bu halda transformasiya məlumatları veb-səhifədəki cədvələ yerləşdirir.

Aşağıdakı nümunə məlumatları yükləyən transformasiyanı göstərir veb səhifədəki cədvələ. Nümunənin məqsədi transformasiyaların necə yaradılacağını izah etmək deyil, onların ala biləcəyi formalardan birini göstərməkdir.

ad Cins Yaş dəyişdirilmiş Qanunsuz Lisenziya Sahibi

Bu nümunə transformasiya növlərindən birinin mətninin necə görünə biləcəyini göstərir, lakin yadda saxlayın ki, siz məlumatlardan sizə lazım olanın aydın təsviri ilə özünüzü məhdudlaşdıra bilərsiniz və bu təsviri öz dilinizdə etmək olar. Məsələn, İT departamentinə gedib deyə bilərsiniz ki, son iki ildə konkret regionlar üzrə satış məlumatlarını çap etməlisiniz və bu məlumat bu və ya digər şəkildə olmalıdır. Bundan sonra şöbənin mütəxəssisləri sorğunuzu yerinə yetirmək üçün transformasiyanı yaza (və ya dəyişdirə) bilərlər.

Microsoft və getdikcə daha çox sayda digər şirkətlər XML-dən istifadəni daha da rahat edən müxtəlif tapşırıqlar üçün transformasiyalar yaradırlar. Gələcəkdə çox güman ki, çox az və ya heç bir fərdiləşdirmə olmadan ehtiyaclarınıza uyğun bir çevrilmə yükləmək mümkün olacaq. Bu o deməkdir ki, zaman keçdikcə XML-dən istifadə getdikcə daha ucuzlaşacaq.

Microsoft Office sistemində XML

Office-in peşəkar nəşrləri XML üçün təkmil dəstək verir. 2007-ci il Microsoft Office Sistemindən başlayaraq, Microsoft Office DOCX, XLSX və PPTX kimi XML əsaslı fayl formatlarından istifadə edir. XML məlumatları ikili formatda deyil, mətn formatında saxladığından, müştərilər öz sxemlərini müəyyən edə və qonorar ödəmədən məlumatlarınızı bir çox üsullarla istifadə edə bilərlər. Yeni formatlar haqqında ətraflı məlumat üçün Açıq XML Formatlarına və Fayl Adı Genişləndirilməsinə baxın. Aşağıda digər faydalar var.

Bütün bunlar əladır, amma sxemsiz XML məlumatınız varsa necə? Hansı Office proqramından istifadə etdiyinizdən asılıdır. Məsələn, Excel-də sxemsiz XML faylını açdığınız zaman o, sxemin mövcud olduğunu güman edir və sizə məlumatları XML cədvəlinə yükləməyə imkan verir. Siz məlumatları çeşidləmək, filtrləmək və hesablamaq üçün XML siyahıları və cədvəllərindən istifadə edə bilərsiniz.

Office-də XML Alətlərini aktivləşdirin

Varsayılan olaraq, Developer nişanı göstərilmir. Office-də XML əmrlərindən istifadə etmək üçün lentə əlavə edilməlidir.

Əvvəlki məqalədə XML ilə bağlı ümumi anlayışlar təsvir edilmişdir. Bu yazıda biz XML faylının dəyişdirilməsi, əlavə edilməsi, axtarışı ilə bağlı əsas hərəkətləri necə yerinə yetirəcəyimizi öyrənəcəyik.

Nümunə üçün istifadə olunan XML faylı.

Mazda 2007 BMW 2009

xml dom

Hazırda faylımız aşağıdakı strukturdan ibarətdir:

İçindəki qovşaqlar arasındakı əlaqə XML DOM, əsas məqamlar:

1. DOM ağacındakı hər hansı qovşaqda ana ParentNode var. Bizim nümunəmizdə qaraj hər iki avtomobil elementinin anasıdır və hər iki avtomobil elementi öz növbəsində model və il elementlərinin valideynləridir.

Avtomobilin xml elementini necə əldə etmək olar?

Console.WriteLine(elmRoot["avtomobil"].ParentNode.Name); //Nəticə: qaraj

2. Valideynlərin ChildNodes uşaqları ola bilər. Məsələn, bir qaraj qovşağı üçün hər iki avtomobil elementi uşaqlardır. Avtomobil elementlərində model və il uşaqları da var.

Uşaq qovşaqları, bütün uşaq xml elementlərini saxlayan kolleksiyadır, istədiyiniz elementə daxil olmaq üçün onun indeksini təyin etməlisiniz. (İndeks həmişə sıfırdan başlayır!)

Məsələn: ilk uşaq elementi necə əldə etmək olar?

ElmRoot.ChildNodes;

3. Adi həyatda olduğu kimi, uşaq ilk Birinci Uşaq və ya sonuncu Son Uşaq doğula bilər.

Məsələn, avtomobil elementini götürsək, onda

FirstChild model LastChild ildir

4. Öz növbəsində uşaq elementlər arasında da əlaqələr var, real həyatla paralellər aparsaq, onlar qardaş və ya bacı ola bilərlər.

Bir uşağın, məsələn, bir qardaşı Əvvəlki Qardaş və sonrakı qardaşı Növbəti Qardaş ola bilər

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Nəticə: year Console.WriteLine(elmRoot.ChildNodes. LastChild.PreviousSibling.Name); //Nəticə: model

Element tapılmadıqda, istisna atılır: NullReferenceException, buna görə də xml ilə işləyərkən həmişə try catch bloklarından istifadə edin.

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

LastChild NextSibling-dir;
Birinci Uşaq Əvvəlki Qardaşdır;

Yuxarıda təsvir olunan üsullardan istifadə edərək, istədiyiniz node-a asanlıqla gedə və lazım olan hər hansı bir dəyəri əldə edə bilərsiniz.

Bir xml elementinin dəyərini necə əldə etmək olar?

Xml elementinin dəyəri InnerText xüsusiyyətindən istifadə etməklə əldə edilə bilər, məsələn:

Console.WriteLine(elmRoot["car"].FirstChild.InnerText); //Nəticə: mazda

Xml elementinin eyni dəyərini əldə etməyin başqa bir yolu:

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Nəticə: mazda

DOM ağacında hərəkət ardıcıllığı:

Qaraj -> avtomobil -> model -> Mazda

İl alın:

ElmRoot["car"].LastChild.InnerText; //Nəticə: 2007

Ardıcıllıq:

Qaraj -> maşın -> il -> 2007

Başqa bir misal: eyni nəticə əldə etməyin 3 yolu.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["car"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Nəticə: BMW

Mazda dəyərinə malik element üçün ili əldə etmək istəyirsinizsə:

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Nəticə: 2007

BMW üçün (iki yolla eyni nəticə əldə edin)

Console.WriteLine(elmRoot.ChildNodes.Item(1).ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Nəticə: 2009

Bir xml elementinin dəyərlərini necə dəyişdirmək olar?

Əmlakdan istifadə Daxili Mətn() xml elementinin dəyərini həm əldə edə, həm də dəyişə bilərsiniz, məsələn, ili dəyişə bilərsiniz.

//Yeni dəyər təyin et elmRoot.FirstChild.LastChild.InnerText = "2010"; //Konsol ekranına yeni dəyəri çıxarın Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Nəticə: 2010

Eyni zamanda, bütün dəyişikliklərin virtual xml faylı ilə baş verdiyini xatırlamaq lazımdır, fiziki bir fayl açsanız, orada hələ də 2007-ci ilin göstərildiyini görəcəksiniz.

Dəyişikliklərin qüvvəyə minməsi üçün Saxla metodundan istifadə etməlisiniz, məsələn:

ElmRoot.Save("xml fayl adı və ya axın");

İndi məlumat "fiziki" xml faylında dəyişdiriləcək.

Uşaq elementlərin sayını necə əldə etmək olar?

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

qaraj -> maşında 2 uşaq var: model və il

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

qaraj -> avtomobil -> modeldə 1 xml uşaq elementi var.

Uşaq elementlərə daxil olmaq

indeksinə görə

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Nəticə: avtomobil

Döngə ilə

Foreach (elmRoot.ChildNodes-da XmlNode nod) ( Console.WriteLine(nod.Name); ) //Nəticə: avtomobil, avtomobil

Bir xml elementinin adını necə əldə etmək olar?

elmRoot.Name; //Nəticə: qaraj

Yeni XML Elementinin yaradılması

Gəlin XML sənədimizdə onu digər ikisindən (avtomobil) fərqləndirmək üçün yeni element yaradaq, onu avtobus adlandıraq.

Yeni element yaradarkən biz msdn saytından tövsiyədən istifadə edəcəyik və standart yeni XmlElement əvəzinə CreateElement metodundan istifadə edəcəyik.

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

Yeni xml elementinin yaradılması və əlavə edilməsi

Gəlin "BUS" adlı yeni xml elementi yaradaq.

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //avtomobil, avtomobil XmlElement elmNew = xmlDoc.CreateElement("avtobus"); elmRoot.AppendChild(elmNew); Console.WriteLine(elmRoot.ChildNodes.Count); //3 avtomobil, avtomobil, avtobus xmlDoc.Save("xml fayl adı");

İzahat:

1. Əvvəlcə yeni elementlər əlavə edəcəyimiz kök elementi alırıq.

2. Test olaraq, qaraj elementinin uşaqlarının cari sayını çap edin: 2 (avtomobil və avtomobil)

3. Yeni BUS elementi yaradın

4. Metoddan istifadə AppendChild ağaca yeni element əlavə edin

5. Yenidən çekdən istifadə edək və qaraj elementi üçün elementlərin cari sayını göstərək, indi onlardan 3-ü var: avtomobil, avtomobil, avtobus.

6. Dəyişikliklərin fiziki fayla təsir etməsi üçün biz saxlayırıq

XML faylının özündə yeni element belə görünəcək:

Yeni xml elementini necə əlavə etmək olar?

Tapşırıq: yeni XML elementi yaradın və ona istehsal ili kimi bəzi mətn məzmunu əlavə edin.

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

XML faylında:

2006

Aydınlıq üçün

İndi isə avtomobillə eyni arxitekturaya malik “avtobus” node yaradaq, yəni qovşaqları əlavə edək: model, il və bəzi mətn məzmunu.

Uşaq elementləri ilə XML elementinin yaradılması

string strFilename = @"C:\dərslər\Auto.xml"; //yaddaşda yeni xml sənədi yaradın XmlDocument xmlDoc = new XmlDocument(); //xml faylını yaddaşa yükləyin xmlDoc.Load(strFilename); //XmlElement kök elementini alın elmRoot = xmlDoc.DocumentElement; //3 element yaradın: avtobus, model, il XmlElement elmBUS = xmlDoc.CreateElement("avtobus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("il"); //Elementlər üçün dəyərlər təyin edin: model, il XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); əks halda əlavə et //Bus elementinə iki uşaq element əlavə edin: model və il elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); //Model və il qovşaqlarına qiymətlər əlavə edin elmModel.InnerText = "liaz"; elmYear.AppendChild(il_txt); // ağaca yeni xml element şinini əlavə edin elmRoot.AppendChild(elmBUS); //Hər şeyin düzgün əlavə edilib-edilmədiyini yoxlayın Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Əgər hər şey qaydasındadırsa, Saxla metodundan istifadə edin xmlDoc.Save("xml fayl adı");

Nəticə:

liaz 2006

Bu kodu necə qısaltmaq olar? Məsələn, aşağıdakı kimi:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("avtobus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("il"); //Model və il qovşaqlarına qiymətlər əlavə edin elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); elmRoot.AppendChild(elmBUS); //Əgər hər şey düzgündürsə, Saxla metodunu çağırın xmlDoc.Save("xml fayl adı");

Kodu bir az daha qısaldaq, bunun üçün InnerXml xassəsindən istifadə edəcəyik:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("avtobus"); string txt=" liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (qaraj olacaq) XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild( elmXML);xmlDoc kimi kök elementə daxil olmaq üçün başqa bir yoldur. .Save(PathXmlFile);

Nəticə

GetElementByTagName ilə elementlərin siyahısını əldə edin

GetElementByTagName qaytarır XmlNodeList, göstərilən elementə aid bütün nəsil elementləri ehtiva edən, məsələn, qarajda saxlanılan bütün avtomobil modellərini almalıyıq:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); foreach (modelName-də XmlNode node) ( Console.WriteLine(node.InnerText); ) //Nəticə: mazda, bmw, liaz

İndekslə istinad:

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

GetElementByTagName metodundan istifadə edərək yeni yaradılmış "avtobus" elementinin mətn məzmununu necə dəyişə bilərəm?

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

Və ya liaz adını İkarus olaraq dəyişə bilərsiniz

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

.NET proqramlarını hazırlayarkən XML məlumatları ilə işləmək barədə danışmağa söz verdiyimdən xeyli vaxt keçdi. Verilən vədlərə əməl edilməlidir. Nəzərə alın ki, bu məqalə peşəkar .NET tərtibatçıları üçün deyil, .NET proqramlarının yaradılmasında hələ əhəmiyyətli təcrübəyə malik olmayanlar üçün nəzərdə tutulub.


Niyə XML ilə işləmək lazımdır?

Əgər hələ də XML-in nə olduğu barədə çox yaxşı təsəvvürünüz yoxdursa, o zaman 2007-ci il nömrəli “KV”də “XML ciddi və uzun müddətdir” məqaləsini oxumağı məsləhət görürəm. Daha vacib şeylər üçün yerə qənaət etmək üçün XML formatının özü burada təhlil edilməyəcək.

Proqram kodu ilə tanış olmağa başlamazdan əvvəl bir əsas suala cavab verməlisiniz: niyə XML dəstəyini ümumiyyətlə tətbiqinizə daxil etməlisiniz? Düşünürəm ki, bir çoxları bir çox texnologiyalarla bağlı bu sualı verdilər və cavabdan sonra onların hamısı ərizələrə daxil edilmədi. Bununla belə, XML ilə işlər bir az fərqlidir və bir çox hallarda bu formatdan istifadə etmək üçün real səbəblər var.

XML-in əsas üstünlüyü ondan ibarətdir ki, təbiətcə mətn formatı olmaqla, istənilən məlumatı saxlamağa və ötürməyə mükəmməl imkan verir. Bu format mətn olduğundan, onun çarpaz platforma xarakteri problemi özü həll olunur və XML məlumatlarının ötürülməsi problemi də asanlıqla həll olunur (məsələn, SOAP-da edildiyi kimi). Bundan əlavə, yeni atributlar əlavə etməklə ötürmə və ya saxlama formatını asanlıqla dəyişə bilərsiniz və formatın əvvəlki versiyaları ilə uyğunluqdan çox narahat olmaya bilərsiniz, çünki köhnə versiyadan istifadə edən proqramlar yeni etiketlərə diqqət yetirmədən ehtiyac duyduqlarını oxuya biləcəklər. ya da atributlar.. Bir çox proqramlar XML əsaslı fayl formatlarından istifadə edir, bir çox rabitə protokolları da XML əsaslıdır və hər ikisinin siyahısı artmaqda davam edir.

Təbii ki, digər tərəfdən, XML o qədər də qənaətcil deyil, çünki Computer News forumuna gələnlərdən birinin bir dəfə düzgün qeyd etdiyi kimi, XML sənədləri çox vaxt 10% məlumat və 90% teqdən ibarətdir. Bununla belə, bu, seçdiyiniz etiketlərdən çox asılıdır. yaza bilersiniz st. Melnikaite, 2, edə bilərəm . Düzünü desəm, mənə elə gəlir ki, indiki sərt disklər və qalın kanallarla xüsusilə kiçilməyin mənası yoxdur.

Beləliklə, bacarıqlı əllərdə XML güclü və rahat bir şeydir və bu formatın hər yerdə olması səbəbindən ondan heç bir yerə gedə bilməzsiniz. Beləliklə, proqram kodunun yazılmasına keçək.

Proqramlaşdırma üçün biz .NET platformasının əsas dili olan C#-dan istifadə edəcəyik. Mümkün qədər çox oxucunun yuxarıdakı proqram kodu ilə özləri üçün məşq etmələri üçün mən C # və .NET Framework-ün ilk versiyasından istifadə edəcəyəm "a.


Məlumat qeydi

Əvvəlcə verilənlərin yazılmasından danışaq, çünki bilirsiniz, haradansa nəsə oxumaq üçün əvvəlcə hardasa nəsə yazmalısınız. Və biz proqramlaşdırma ilə məşğul olan kimi, o zaman “tutacaqlarla” XML verilənləri yaratmaq bizə uyğun deyil. Buna görə də əvvəlcə XML-də məlumatların yazılması ilə məşğul olaq.

Başlamaq üçün Visual Studio, #Develop və ya C# Builder proqramında yeni layihə yaradın və idxal edilmiş ad məkanlarının siyahısına System.Xml əlavə edin.

XML məlumatlarını .NET Framework-də yazmaq üçün xüsusi XmlTextWriter sinfi cavabdehdir ki, bu da XML məlumatlarını ixtiyari bir axına yazmağa imkan verir.Yəni, biz, ümumiyyətlə desək, onları fayla və verilənlər bazasına yaza bilərik. və İnternet üzərindən kiməsə göndərin, lakin hələlik biz hər şeyi fayla yazacağıq. Siz obyekt konstruktorunu dəyişdirərək çıxışı yönləndirə bilərsiniz (yəni başlatma zamanı fayl adını və onun kodlamasını deyil, məlumat axını olan obyekti ötürməklə) ) Düşünürəm ki, mən özümü bir az qabaqlayıram, gəlin əvvəlcə XML faylımıza məlumatların yazılması üçün məsul olan koda nəzər salaq.

String FileName = "c:\\demo.xml"; XmlTextWriter xml = yeni XmlTextWriter(FaylAdı, System.Text.Encoding.Unicode); xml.Formatting = Formatting.Indented; xml.WriteStartDocument(); xml.WriteStartElement("rootelement"); üçün (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();

Birinci sətir, məncə, olduqca aydındır - bu, sadəcə məlumatları saxlayacağımız faylın adının qeydidir. Sonra, XmlTextWriter tipli bir obyekt yaradırıq (gördüyünüz kimi, xml adlanır) və bütün sonrakı əməliyyatları onunla yerinə yetirəcəyik. Qeyd edək ki, obyekti qurarkən XML-in yazılacağı kodlaşdırmanı da qeyd edirik: nümunəmizdə bu Unicode-dur. Növbəti sətir, ümumiyyətlə, tələb olunmur, lakin o, bizim XML sənədimizi, necə deyərlər, insan üçün oxunaqlı edəcək, yəni lazımi abzasları əlavə edib sətirlərə böləcək. Bu olmasaydı, bütün sənəd bir sətirdə yazılardı ki, bu da yerə qənaət etməklə yanaşı, onu əl ilə redaktə etmək üçün praktiki olaraq yararsız edir.

Sənədin yazılması xml obyektimizin WriteStartDocument () metoduna çağırışla başlayır. Ondan sonrakı sətir XML sənədimizə kök elementi "rootelement" əlavə edir (xatırlayın, XML sənədləri üçün kök element bir instansiyada mövcud olmalıdır). Sonra, bir döngədə XML sənədimizə heç bir semantik yük daşımayan daha on element əlavə edirik, hər biri üçün iki atribut və daha on alt element təyin edirik. Nəzərə alın ki, biz verilənləri açıq şəkildə çevirmədən sətirə nömrə əlavə edə bilərik, lakin əgər nömrə tam sətir təşkil etməlidirsə, o zaman ToString() metodu ilə açıq şəkildə çevrilməlidir. Onu da qeyd edək ki, biz XML sənədimizin hər bir elementini, sonra isə bütün sənədi açıq şəkildə bağlamalıyıq.

İndi XML sənədimiz uğurla yazılmışdır, gəlin ondan məlumatları necə oxuya biləcəyimizi görək.


Məlumatların oxunması

XML faylının oxunmasının nəticəsini izləyə bilmək üçün ərizənizin formasına listBox komponenti əlavə edin (əlbəttə ki, bu konsol deyilsə). Yaxşı, proqramınız konsoldursa, çıxışı asanlıqla konsola yönləndirə bilərsiniz.

Həmişə olduğu kimi, biz əvvəlcə proqram kodu ilə tanış olacağıq, sonra isə bu kodun dəqiq nə etdiyini görəcəyik.

XmlTextReader xml = yeni XmlTextReader(FaylAdı); xml.WhitespaceHandling = WhitespaceHandling.None; int i = 0; while (xml.Read())( if ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "alt element")) ( listBox1.Items.Add("alt element " + i + " tapıldı") ; i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); listBox1.Items.Add(" " + xml.GetAttribute("attrib2")); while (xml.Read()&( xml.Name == "alt alt element"))( listBox1.Items.Add(" " + xml.GetAttribute("attr")); ) ) ) xml.Close();

Oxumaq üçün, qeyd etdiyiniz kimi, biz başqa sinifdən, yəni XmlTextReader-dən istifadə edirik. O, verilənləri yazmaq üçün istifadə etdiyimiz siniflə eyni ad məkanındadır. Birinci sətirdə biz xml adlı XmlTextReader instansiyasını yaradırıq (burada biz güman edirik ki, FileName dəyişəni bizim tərəfimizdən daha əvvəl müəyyən edilib).Boş sətirləri ötürmək üçün, əgər yeni yaradılmış XML faylımızda anlaşılmaz şəkildə baş verərsə, biz istifadə edirik. yuxarıdakı kod parçasında aşağıdakı sətir. i dəyişəni verilənlərin oxunduğu XML faylında tapılan "alt element" elementlərinin sayını hesablamaq üçün istifadə olunur.

Sonra fayldan məlumatların birbaşa oxunması dövrü gəlir. Read() metodu XML sənədinin növbəti elementini oxuyur və onu oxuduqdan sonra biz dəqiq nə oxuduğumuzu yoxlayırıq. Əgər o, həqiqətən də "alt element"dirsə, biz listBox1-ə oxunan element haqqında məlumat əlavə edirik, oxunan elementlərin sayını ehtiva edən dəyişəni artırırıq və sonra elementin atributlarını oxuyuruq. Atributları oxuduqdan sonra "alt alt element" alt elementlərini (qeyd edək ki, bunun üçün bizə ayrıca XmlTextReader lazım deyil) və bu alt elementlərin atributlarını oxumaq üçün ayrıca dövrə təşkil edirik.Əvvəlki kimi biz bütün oxunmuş məlumatı listBox1-ə daxil edirik və idarə edirik. düzgün oxumaq.

XML fayllarını oxuyarkən, onları yazarkən olduğu kimi, XmlTextReader "a" qurarkən, parametr kimi oxunun aparılacağı axını təyin edə bilərsiniz və sonra yalnız fayllardan oxumaq mümkün olacaq, həm də yuxarıda misallarını verdiyim digər mənbələrdən. XmlTextReader sinfinin bir faydalı xüsusiyyətini qeyd etmək lazımdır: oxuyarkən o, bütün oxuna bilən XML sənədini yaddaşa yükləmir, ona görə də təhlil etmək üçün ondan istifadə etmək rahatdır. böyük XML sənədləri (məsələn, XML verilənlər bazaları).


Pərdə arxasında

Ümumiyyətlə, indicə təhlil etdiyimiz nümunə real layihələr üçün çox sadədir. Hal-hazırda, XML sənədlərini oxuyarkən, bir qayda olaraq, DTD, XML Schema və ya Relax NG istifadə edərək təsdiqlənir. Doğrulama XML sənədinin işarələnməsinin xarici faylda təsvir edilmiş bəzi standartlara uyğunluğunu yoxlamaqdır. Doğrulama ona görə lazımdır ki, sənədin yoxlanılması proqram alqoritminə qoşulmasın, lakin verilənləri oxuyan və ya yazan proqram kodunu yeniləmədən məlumat formatını dəyişdirərkən özbaşına dəyişə bilər. Təəssüf ki, indi təsdiqləməni təhlil etməyə vaxtımız olmayacaq, çünki başa düşdüyünüz kimi, qəzet məqaləsinin həcmi müəyyən məhdudiyyətlərə malikdir.

XML məlumatları ilə işləmək üçün başqa bir maraqlı və faydalı praktik məqam XSL məlumat transformasiyasıdır. Bu transformasiya verilənlərə HTML səhifələrində göstərildikdə tətbiq edilir və əslində, sadəcə olaraq müəyyən veb-səhifə şablonunun bəzi verilənləri olan XML faylına tətbiqidir. XML məlumatlarının bu və ya digər şəkildə cari istifadəsində aslan payı Ümumdünya Şəbəkəsinin payına düşdüyündən, XSL çevrilmələrini nəzərə almaq çox, çox yaxşı olardı.

Beləliklə, düşünürəm ki, bu məqalənin davamı olacaq - amma əlbəttə ki, özünüz (yəni Kompüter Xəbərlərinin oxucuları) bu barədə forumda və ya e-poçt ünvanıma məktubla soruşsanız. Hələlik, .NET proqramlarında XML-in istifadəsi haqqında, bəlkə də bu qədər. Ümid edirik ki, bu məlumat sizin üçün faydalı olacaqdır.