Az xml feldolgozásának módjai a c. XML-dokumentum megnyitása – az XML-fájlokkal való munkavégzés jellemzői. XML-elem létrehozása gyermekelemekkel




Extensible Markup Language (XML). Valójában csak szöveges fájlok, amelyek egyéni címkéket használnak a dokumentum szerkezetének és egyéb jellemzőinek leírására.

Mi az XML

XML egy jelölőnyelv, amelyet a World Wide Web Consortium (W3C) hozott létre, hogy meghatározza az emberek és a gépek által olvasható dokumentumok kódolási szintaxisát. Ezt címkékkel teszi, amelyek meghatározzák a dokumentum szerkezetét, valamint a dokumentum tárolási és szállítási módját.

A legegyszerűbb módja annak, hogy összehasonlítsa egy másik jelölőnyelvvel, amelyet esetleg ismer, a hipertext jelölés(HTML) a weboldalak kódolására szolgál. A HTML előre meghatározott jelölőkarakter-készletet (rövid kódokat) használ, amelyek leírják a weboldal tartalmának formátumát.

Az XML közötti különbség azonban az, hogy bővíthető. Az XML-nek nincs előre meghatározott jelölőnyelve, mint a HTML-nek. Ehelyett az XML lehetővé teszi a felhasználók számára, hogy saját jelölőkaraktereket hozzanak létre a tartalom leírására, így korlátlan és önmeghatározó karakterkészletet alkotnak.

Lényegében a HTML egy olyan nyelv, amely a tartalom megjelenítésére összpontosít, míg az XML egy dedikált adatleíró nyelv, amelyet az adatok tárolására használnak.

Az XML-t gyakran használják más dokumentumformátumok alapjául, amelyekből több száz van. Íme néhány, amit érdemes tudni:

  • Az RSS és az ATOM leírja, hogy az alkalmazások hogyan kezeljék a hírfolyamokat.
  • A Microsoft .NET XML-t használ konfigurációs fájljaihoz.
  • A Microsoft Office az XML-t használja a dokumentumszerkezet alapjaként.

Tehát ha van XML-fájlja, az nem feltétlenül mondja meg, hogy melyik alkalmazáshoz való. Emiatt azonban nem kell aggódnia, hacsak nem XML-fájlokat fejleszt.

XML fájl megnyitása

Az XML-fájlok közvetlen megnyitásának számos módja van. Bármilyen szövegszerkesztővel megnyithatja és szerkesztheti, bármilyen webböngészővel megtekintheti, vagy olyan webhelyet használhat, amely lehetővé teszi a megtekintését, szerkesztését és akár más formátumba konvertálását is.

Ha rendszeresen dolgozik XML-lel, használjon szövegszerkesztőt

Mivel az XML fájlok csak egyszerű szöveges fájlok, bármilyen szövegszerkesztővel megnyithatók. Azonban sok szövegszerkesztő, például a Jegyzettömb, egyszerűen nem úgy van kialakítva, hogy az XML-fájlokat a megfelelő szerkezetben jelenítse meg. Ez hasznos lehet az XML-fájlok tartalmának gyors megismeréséhez. Vannak azonban kényelmesebb eszközök a velük való munkához.


Webböngésző használata XML-fájl megtekintéséhez

Ha nem kell szerkesztenie az XML-fájlt, csak meg kell tekintenie a tartalmat, a böngészője meg tudja oldani a feladatot. Sőt, a webböngésző valószínűleg már szabványos XML-megjelenítőként van beállítva. Tehát ha duplán kattint egy XML-fájlra, meg kell nyitnia azt a böngészőben.

Ha nem, kattintson a jobb gombbal a fájlra, hogy megtalálja azokat a lehetőségeket, amelyekkel megnyithatja azt bármely más alkalmazással. Csak válassza ki webböngészőjét a programok listájából.

Amikor a fájl megnyílik, jól strukturált adatoknak kell megjelennie. Nem olyan szép, mint a Notepad++ színes megjelenése, de sokkal jobb, mint a jegyzettömb.

Az online szerkesztő használata XML-fájlokhoz

Ha véletlenszerű XML-fájlt szeretne szerkeszteni, és nem szeretne új szövegszerkesztőt letölteni, vagy szüksége van rá xml fájl konvertálása másik formátumba, több tisztességes online XML-szerkesztő is elérhető ingyenesen.

TutorialsPoint.com , XMLGrid.net és CodeBeautify.org – lehetővé teszik az XML-fájlok megtekintését és szerkesztését. A szerkesztés befejezése után feltöltheti a módosított XML-fájlt, vagy akár más formátumba konvertálhatja.

Használjuk példaként a CodeBeautify.org webhelyet. Az oldal három részre oszlik. A bal oldalon látható az XML-fájl, amellyel dolgozik. Középen számos funkciót talál. A jobb oldalon néhány választható lehetőség eredménye látható.

Például az alábbi képen a teljes XML fájlunk a bal oldalon található, és az eredmény ablakban egy fa nézet látható, mert a középen lévő Fanézet gombra kattintottunk.

Használja a Tallózás gombot XML-fájl betöltéséhez a számítógépről, vagy az URL betöltése gombot az XML-fájl internetes forrásból való lekéréséhez.

A Fanézet gomb jól formázott fastruktúrában jeleníti meg az adatokat az eredmények ablaktáblájában, az összes címkét narancssárgával kiemelve, az attribútumokat pedig a címkéktől jobbra.

A Beatify szépen, könnyen olvasható módon jeleníti meg adatait.

A Kicsinyítés gomb a legkevesebb szóköz használatával jeleníti meg adatait. Ez a funkció minden egyes adatot egy sorba helyez. Ez hasznos lesz, ha megpróbálja kicsinyíteni a fájlt, ami helyet takarít meg.

Végül az XML-ből JSON-ba gombbal konvertálhatja az XML-t JSON-formátumba, az Exportálás CSV-be gombbal pedig az adatokat vesszővel elválasztott értékfájlba mentheti, a Letöltés gombbal pedig letöltheti a fájlban végzett módosításokat. új XML fájl..

Valószínűleg hallott már az XML-ről, és számos oka van annak, hogy miért érdemes használnia a szervezetében. De mi is pontosan az XML? Ez a cikk elmagyarázza, mi az XML és hogyan működik.

Ebben a cikkben

Jelölések, jelölések és címkék

Az XML megértéséhez hasznos megjegyezni, hogyan címkézheti fel az adatokat. A dokumentumokat évszázadok óta hozták létre az emberek, és ez idő alatt az emberek jegyzeteket készítettek bennük. Például a tanárok gyakran megjelölik a tanulók munkáját, jelezve, hogy szükséges-e a bekezdések áthelyezése, a mondat világosabbá tétele, a helyesírási hibák kijavítása stb.. Egy dokumentum megjelölése meghatározhatja az információ szerkezetét, jelentését és megjelenését. Ha már használta a Microsoft Office Word javításait, akkor ismeri a számítógépes jegyzetűrlapot.

Az információs technológia világában a "címkézés" kifejezésből "jelölés" lett. A Markup címkéknek (vagy néha tokennek) nevezett kódokat használ az adatok szerkezetének, vizuális megjelenésének és – XML esetén – jelentésének meghatározására.

A cikk HTML szövege jó példa a számítógépes jelölés használatára. Ha jobb gombbal rákattint erre az oldalra a Microsoft Internet Explorerben, és kiválasztja HTML kód megtekintése, akkor olvasható szöveget és HTML-címkéket fog látni, mint pl

ÉS

. A HTML- és XML-dokumentumokban a címkék könnyen felismerhetők, mivel szögletes zárójelben vannak. A cikk forráskódjában a HTML-címkék számos funkciót látnak el, például meghatározzák az egyes bekezdések elejét és végét (

...

) és a rajzok helyét.

Az XML megkülönböztető jellemzői

A HTML és XML formátumú dokumentumok címkékbe zárt adatokat tartalmaznak, de a két nyelv közötti hasonlóság itt véget ér. HTML formátumban a címkék határozzák meg az adatok megjelenítését – a címsorok helyét, a bekezdés elejét stb. Az XML formátumban a címkék határozzák meg az adatok szerkezetét és jelentését – hogy mi is az.

Az adatok szerkezetének és jelentésének leírásakor lehetővé válik azok többféle módon történő újrafelhasználása. Például, ha van egy értékesítési adatblokkja, ahol minden elem egyértelműen meg van határozva, akkor csak a szükséges elemeket töltheti be az értékesítési jelentésbe, és a többi adatot átviheti a könyvelési adatbázisba. Más szóval, egy rendszer segítségével adatokat generálhat és XML formátumban címkézhet, majd ezeket az adatokat bármely másik rendszerben feldolgozhatja, függetlenül az ügyfél platformjától vagy operációs rendszerétől. Ez az interoperabilitás teszi az XML-t az egyik legnépszerűbb adatcsere-technológia gerincévé.

Munka közben tartsa szem előtt a következőket:

    HTML nem használható XML helyett. Az XML-adatok azonban HTML-címkékbe csomagolhatók, és weboldalakon jeleníthetők meg.

    A HTML-funkciók az összes felhasználó számára közös, előre meghatározott címkekészletre korlátozódnak.

    Az XML-szabályok lehetővé teszik az adatok és szerkezetük leírásához szükséges címkék létrehozását. Tegyük fel, hogy információkat kell tárolnia és meg kell osztania a háziállatokról. Ehhez a következő XML-kódot hozhatja létre:

    Izzy sziámi 6 Igen nem Izz138bod Colin Wilcox

Amint láthatja, az XML-címkék egyértelművé teszik, hogy milyen adatokat tekint meg. Például egyértelmű, hogy ezek egy macskára vonatkozó adatok, és könnyen meghatározhatja a nevét, életkorát stb.. A szinte bármilyen adatszerkezetet meghatározó címkék létrehozásának lehetőségével az XML bővíthető.

De ne keverje össze a példában szereplő címkéket a HTML-fájl címkéivel. Például, ha a fenti XML szöveget beilleszti egy HTML-fájlba, és megnyitja egy böngészőben, az eredmény így fog kinézni:

Izzy Sziámi 6 igen nem Izz138bod Colin Wilcox

A webböngésző figyelmen kívül hagyja az XML címkéket, és csak az adatokat jeleníti meg.

Jól formált adatok

Valószínűleg hallott már valakit az informatikában „jól formázott” XML-fájlról beszélni. Egy jól formázott XML-fájlnak nagyon szigorú szabályokat kell követnie. Ha nem követi ezeket a szabályokat, az XML nem működik. Például az előző példában minden kezdő címkéhez tartozik egy megfelelő zárócímke, így ez a példa a jól formázott XML-fájlok egyik szabályát követi. Ha eltávolít egy címkét a fájlból, és megpróbálja megnyitni valamelyik Office programban, hibaüzenetet kap, és nem tudja majd használni az ilyen fájlt.

Nem kell ismernie a jól formázott XML-fájlok létrehozásának szabályait (bár könnyen érthetőek), de ne feledje, hogy más alkalmazásokban és rendszerekben csak jól formázott XML-adatok használhatók. Ha az XML fájl nem nyílik meg, akkor valószínűleg hibás.

Az XML platformfüggetlen, ami azt jelenti, hogy bármely XML használatára épített program képes olvasni és feldolgozni az XML adatokat, hardvertől vagy operációs rendszertől függetlenül. Például a megfelelő XML-címkékkel egy asztali program segítségével megnyithatja és feldolgozhatja a nagyszámítógépről kapott adatokat. És függetlenül attól, hogy ki hozta létre az XML-adatokat, az adatokkal különféle Office-alkalmazásokban is lehet dolgozni. Együttműködési képességének köszönhetően az XML az adatbázisok és a felhasználói számítógépek közötti adatcsere egyik legnépszerűbb technológiájává vált.

A jól formált címkézett adatokon kívül az XML-rendszerek jellemzően két további komponenst is használnak: sémákat és transzformációkat. A következő szakaszok leírják, hogyan működnek.

Rendszer

Ne ijedjen meg a "séma" kifejezéstől. A séma egyszerűen egy XML-fájl, amely szabályokat tartalmaz egy XML-adatfájl tartalmára vonatkozóan. A sémafájlok általában .xsd kiterjesztéssel rendelkeznek, míg az XML adatfájlok az .xml kiterjesztést használják.

A sémák lehetővé teszik a programok számára az adatok érvényesítését. Ezek alakítják ki az adatok szerkezetét, és teszik érthetővé az alkotó és mások számára. Például, ha a felhasználó érvénytelen adatokat ír be, például szöveget a dátum mezőbe, a program felszólíthatja a felhasználót a javításra. Ha az XML-fájlban lévő adatok egyeznek a séma szabályaival, bármilyen XML-t támogató programot használhat az olvasáshoz, értelmezéshez és feldolgozáshoz. Például, ahogy az alábbi ábrán látható, az Excel képes érvényesíteni az adatokat a CAT rendszernek való megfelelés érdekében.

A sémák összetettek lehetnek, és ebben a cikkben lehetetlen elmagyarázni, hogyan kell létrehozni őket. (Az is valószínű, hogy a szervezetében vannak olyan informatikai munkatársak, akik tudják, hogyan kell ezt csinálni.) Hasznos azonban tudni, hogyan néznek ki a diagramok. A következő séma egy címkekészlet szabályait határozza meg ... :

Ne aggódjon, ha a példa értelmetlen. Csak a következőkre figyeljen:

    A példasémában szereplő soron belüli elemeket deklarációnak nevezzük. Ha további részletekre lenne szükség az állattal kapcsolatban, például színe vagy különleges tulajdonságai, az informatikai részleg megfelelő nyilatkozatokat ad a sémához. Az XML rendszer az üzleti igények alakulásával változhat.

    A nyilatkozatok hatékony módja az adatok szerkezetének szabályozásának. Például ad olyan címkéket jelent, mint És , a fenti sorrendben kell lennie. A nyilatkozatok ellenőrizhetik a felhasználói bevitel típusait is. Például a fenti séma pozitív egész számot ír elő a macska életkorához, és logikai értékeket (TRUE vagy FALSE) az ALTERED és DECLAWED címkék esetén.

    Ha az XML fájlban lévő adatok megfelelnek a séma szabályainak, akkor az adatok érvényesnek minősülnek. Az XML-adatfájl sémaszabályoknak való megfelelőségének ellenőrzésének folyamatát (logikailag) érvényesítésnek nevezzük. A sémák használatának nagy előnye, hogy megakadályozzák az adatsérülést. A sémák megkönnyítik a sérült adatok megtalálását is, mivel ilyen probléma esetén az XML-fájl feldolgozása leáll.

Átváltozások

Mint fentebb tárgyaltuk, az XML az adatok hatékony felhasználását és újrafelhasználását is lehetővé teszi. Az adatok újrafelhasználási mechanizmusát XSLT-transzformációnak (vagy egyszerűen transzformációnak) nevezik.

Ön (vagy informatikai részlege) átalakításokat is használhat a háttérrendszerek, például az adatbázisok közötti adatcserére. Tételezzük fel, hogy az A adatbázisban vannak értékesítési adatok egy táblázatban, amely hasznos az értékesítési osztály számára. A B adatbázis a bevételek és kiadások adatait egy kifejezetten elszámolásra kialakított táblázatban tárolja. A B adatbázis transzformációt használva adatokat vehet az A adatbázisból, és elhelyezheti a megfelelő táblákba.

Egy adatfájl, séma és transzformáció kombinációja alkotja az alapul szolgáló XML-rendszert. Az alábbi ábra az ilyen rendszerek működését mutatja be. Az adatállományt a séma szabályai szerint ellenőrzik, majd bármilyen alkalmas módon benyújtják átalakításra. Ebben az esetben az átalakítás az adatokat egy táblázatban helyezi el a weboldalon.

A következő példa egy átalakítást mutat be, amely adatokat tölt be egy weboldalon lévő táblázathoz. A példa lényege nem az, hogy elmagyarázza, hogyan kell transzformációkat létrehozni, hanem az, hogy megmutassa az egyik formát, amelyet felvehetnek.

Név Fajta Kor megváltozott Declawed Engedély Tulajdonos

Ez a példa bemutatja, hogyan nézhet ki az egyik transzformációs típus szövege, de ne feledje, hogy korlátozhatja magát az adatok világos leírására, amire szüksége van, és ezt a leírást megteheti a saját nyelvén. Például el lehet menni az informatikai osztályra, és elmondani, hogy ki kell nyomtatnia az elmúlt két év értékesítési adatait bizonyos régiókra vonatkozóan, és ennek az információnak így és így kell kinéznie. Ezt követően az osztály szakemberei megírhatják (vagy módosíthatják) az átalakítást az Ön kérésének teljesítése érdekében.

A Microsoft és egyre több más vállalat olyan átalakításokat készít számos feladathoz, amelyek még kényelmesebbé teszik az XML használatát. A jövőben nagy valószínűséggel lehetséges lesz olyan konverziót letölteni, amely megfelel az Ön igényeinek, kis testreszabással vagy egyáltalán nem. Ez azt jelenti, hogy idővel az XML használata egyre olcsóbb lesz.

XML a Microsoft Office rendszerben

Az Office professzionális kiadásai fokozott támogatást nyújtanak az XML-hez. A 2007-es Microsoft Office System-től kezdve a Microsoft Office XML-alapú fájlformátumokat használ, például DOCX, XLSX és PPTX. Mivel az XML a saját bináris formátuma helyett szöveges formátumban tárolja az adatokat, az ügyfelek saját sémáikat határozhatják meg, és sokféleképpen használhatják az Ön adatait anélkül, hogy jogdíjakat kellene fizetniük. Az új formátumokkal kapcsolatos további információkért tekintse meg az XML-formátumok és fájlnév-kiterjesztések megnyitását. Az alábbiakban további előnyöket olvashat.

Mindez nagyszerű, de mi van akkor, ha XML-adatai vannak séma nélkül? Attól függ, hogy melyik Office programot használja. Ha például egy séma nélküli XML-fájlt nyit meg az Excelben, akkor az azt feltételezi, hogy a séma létezik, és lehetővé teszi az adatok XML-táblába való betöltését. XML-listák és -táblázatok segítségével rendezheti, szűrheti és kiszámíthatja az adatokat.

Engedélyezze az XML-eszközöket az Office-ban

Alapértelmezés szerint a Fejlesztő lap nem jelenik meg. Az Office XML-parancsainak használatához hozzá kell adni a szalaghoz.

Az előző cikkben az XML-lel kapcsolatos általános fogalmakat ismertettük. Ebben a cikkben megtudjuk, hogyan hajthatunk végre alapvető műveleteket az XML-fájl módosításával, hozzáadásával és keresésével kapcsolatban.

A példában használt XML fájl.

Mazda 2007 BMW 2009

xml dom

Jelenleg fájlunk a következő szerkezetet tartalmazza:

A csomópontok közötti kapcsolat XML DOM, alappillanatok:

1. A DOM-fa bármely csomópontjának van szülője ParentNode . Példánkban a garázs mindkét autóelem szülője, és mindkét autóelem szülője a modell és az év elemeinek.

Hogyan szerezhető be a car xml elem szülője?

Console.WriteLine(elmRoot["autó"].ParentNode.Name); //Eredmény: garázs

2. Egy szülőnek lehetnek ChildNodes gyermekei. Például egy garázscsomópontnál mindkét autóelem gyerek. Az autóelemeknél modell és évjáratú gyerekek is vannak.

ChildNodes, egy gyűjtemény, amely az összes gyermek xml elemet tárolja, a kívánt elem eléréséhez meg kell adni az indexét. (Az index mindig nulláról kezdődik!)

Például: hogyan lehet megszerezni az első gyermek elemet?

ElmRoot.ChildNodes;

3. A hétköznapi élethez hasonlóan a gyermek megszülethet első elsőként vagy utolsóként.

Ha az autó elemet vesszük példának, akkor

FirstChild modell LastChild év

4. Viszont a gyermekelemek között is vannak kapcsolatok, lehetnek testvérek, ha párhuzamot vonunk a való élettel.

Egy gyermeknek lehet például egy bátyja Előző testvére és egy következő testvére Következő testvére

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Eredmény: év Console.WriteLine(elmRoot.ChildNodes. LastChild.PreviousSibling.Name); //Eredmény: modell

Ha az elem nem található, akkor a rendszer egy kivételt dob: NullReferenceException, tehát ha xml-lel dolgozik, mindig használjon try catch blokkokat.

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

LastChild a NextSibling;
FirstChild Előző Testvér;

A fent leírt módszerek segítségével könnyedén navigálhat a kívánt csomóponthoz, és megkaphatja a szükséges értéket.

Hogyan lehet lekérni egy xml elem értékét?

Az xml elem értéke az InnerText tulajdonság segítségével szerezhető meg, például:

Console.WriteLine(elmRoot["autó"].FirstChild.InnerText); //Eredmény: mazda

Egy másik mód az xml elem azonos értékének megszerzésére:

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Eredmény: mazda

A DOM-fán való mozgás sorrendje:

Garázs -> autó -> modell -> Mazda

Szerezd meg az évet:

ElmRoot["autó"].LastChild.InnerText; //Eredmény: 2007

Sorozat:

Garázs -> autó -> évjárat -> 2007

Egy másik példa: 3 módszer ugyanazt az eredményt elérni.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["autó"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Eredmény: BMW

Ha egy Mazda értékű elem évszámát szeretné megkapni:

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Eredmény: 2007

BMW-nél (kétféleképpen ugyanaz az eredmény)

Console.WriteLine(elmRoot.ChildNodes.Item(1).ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Eredmény: 2009

Hogyan lehet megváltoztatni egy xml elem értékeit?

Az ingatlan használata BelsőSzöveg() lekérheti és módosíthatja az xml elem értékét is, például módosíthatja az évet.

//Új érték beállítása elmRoot.FirstChild.LastChild.InnerText = "2010"; //Az új érték kiírása a konzol képernyőjére Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Eredmény: 2010

Ugyanakkor emlékeznie kell arra, hogy minden változás egy virtuális xml fájlnál történik, ha megnyit egy fizikai fájlt, látni fogja, hogy a 2007-es év továbbra is szerepel benne.

A módosítások életbe léptetéséhez a Mentés módszert kell használnia, például:

ElmRoot.Save("xml fájlnév vagy adatfolyam");

Most az információ megváltozik a "fizikai" xml fájlban.

Hogyan lehet lekérni a gyermekelemek számát?

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

garázs -> az autóban 2 gyerek van: modell és évjárat

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

garázs -> autó -> modell 1 xml gyermek elemet tartalmaz.

Gyermek elemek elérése

index szerint

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Eredmény: autó

Egy hurokkal

Foreach (XmlNode nod in elmRoot.ChildNodes) ( Console.WriteLine(nod.Name); ) //Eredmény: autó, autó

Hogyan kaphatom meg az xml elem nevét?

elmRoot.Name; //Eredmény: garázs

Új XML elem létrehozása

Hozzunk létre egy új elemet az XML dokumentumunkban, hogy megkülönböztessük a másik kettőtől (autó), nevezzük busznak.

Új elem létrehozásakor az msdn webhely ajánlását használjuk, és a CreateElement metódust használjuk a szabványos új XmlElement helyett.

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

Új xml elem létrehozása és hozzáadása

Hozzon létre egy új xml elemet "BUS" néven.

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //autó, autó XmlElement elmNew = xmlDoc.CreateElement("bus"); elmRoot.AppendChild(elmNew); Console.WriteLine(elmRoot.ChildNodes.Count); //3 autó, autó, busz xmlDoc.Save("xml fájlnév");

Magyarázat:

1. Először is megkapjuk a gyökérelemet, amelyhez új elemeket fogunk csatolni.

2. Próbaként nyomtassa ki a garázselem jelenlegi gyermekszámát: 2 (autó és autó)

3. Hozzon létre egy új BUS elemet

4. A módszer használata AppendChildúj elem hozzáadása a fához

5. Használjuk újra a csekket és jelenítsük meg a garázselem aktuális elemszámát, most 3 db van: autó, autó, busz.

6. Annak érdekében, hogy a változtatások hatással legyenek a fizikai fájlra, elmentjük

Magában az XML-fájlban az új elem így fog kinézni:

Hogyan lehet új xml elemet hozzáadni?

Feladat: hozzon létre egy új XML-elemet, és adjon hozzá szöveges tartalmat, például a kiadás évét.

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

XML fájlban:

2006

Az egyértelműség kedvéért

És most hozzunk létre egy "busz" csomópontot, ugyanolyan architektúrával, mint az autó, vagyis adjuk hozzá a csomópontokat: modell, év és némi szöveges tartalom.

XML-elem létrehozása gyermekelemekkel

string strFilename = @"C:\lessons\Auto.xml"; //új xml dokumentum létrehozása a memóriában XmlDocument xmlDoc = new XmlDocument(); //az xml fájl betöltése a memóriába xmlDoc.Load(strFilename); //Az XmlElement gyökérelem lekérése elmRoot = xmlDoc.DocumentElement; //3 elem létrehozása: busz, modell, év XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("modell"); XmlElement elmYear = xmlDoc.CreateElement("év"); //Az elemek értékeinek beállítása: modell, év XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); adjunk hozzá egyébként //Két gyermek elem hozzáadása a busz elemhez: modell és év elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); //Értékek hozzáadása a modell és az év csomópontjaihoz elmModel.InnerText = "liaz"; elmYear.AppendChild(év_txt); //Új xml elembusz hozzáadása a fához elmRoot.AppendChild(elmBUS); //Ellenőrizze, hogy minden megfelelően van-e hozzáadva Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Ha minden rendben van, akkor használja a Mentés metódust xmlDoc.Save("xml fájlnév");

Eredmény:

liaz 2006

Hogyan lehet lerövidíteni ezt a kódot? Például a következőképpen:

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("modell"); XmlElement elmYear = xmlDoc.CreateElement("év"); //Értékek hozzáadása a modell és az év csomópontjaihoz elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); elmRoot.AppendChild(elmBUS); //Ha minden helyes, akkor hívja meg a Mentés metódust xmlDoc.Save("xml fájlnév");

Rövidítsük le még egy kicsit a kódot, ehhez az InnerXml tulajdonságot fogjuk használni:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); string txt=" liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; Az //xmlDoc.DocumentElement (garázs lesz) egy másik módja a gyökérelem elérésének, ugyanúgy, mint az XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild( elmX); .Save(PathXmlFile);

Eredmény

Szerezze be az elemek listáját a GetElementByTagName segítségével

A GetElementByTagName visszatér XmlNodeList, amely tartalmazza a megadott elemhez tartozó összes leszármazott elemet, például be kell szereznünk az összes garázsban tárolt autómodellt:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFájlnév); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modell"); foreach (XmlNode csomópont a modelName-ben) ( Console.WriteLine(node.InnerText); ) //Eredmény: mazda, bmw, liaz

Hivatkozás indexszel:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modell"); Console.WriteLine(modellName.InnerText); //Eredmény: liaz

Hogyan változtathatom meg az újonnan létrehozott "bus" elem szöveges tartalmát a GetElementByTagName metódussal?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modell"); Console.WriteLine(modellName.InnerText); //Érték lekérése: liaz

Vagy megváltoztathatod a liaz nevet Ikarusra

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

Már jó ideje megígértem, hogy a .NET-alkalmazások fejlesztése során az XML adatokkal való munkáról beszélek. Az ígéreteket be kell tartani. Felhívjuk figyelmét, hogy ez a cikk nem professzionális .NET-fejlesztőknek szól, hanem azoknak, akik még nem rendelkeznek jelentős tapasztalattal .NET-alkalmazások létrehozásában.


Miért kell XML-lel dolgoznunk?

Ha még mindig nincs túl jó elképzelése arról, hogy mi az XML, akkor azt javaslom, hogy olvassa el a 2007-es számú "KV" "XML for real and long time" című cikket. Hogy helyet takarítsunk meg a fontosabb dolgoknak, maga az XML formátum itt nem lesz értelmezve.

Mielőtt elkezdené a programkóddal való ismerkedést, meg kell válaszolnia egy alapvető kérdést: miért kell egyáltalán XML-támogatást beépíteni az alkalmazásába? Azt gondolom, hogy sok technológia kapcsán sokan feltették maguknak ezt a kérdést, és a válasz után nem mindegyik került be a pályázatokba. Az XML-lel azonban egy kicsit más a helyzet, és számos helyzetben valódi okai vannak ennek a formátumnak.

Az XML fő előnye, hogy természeténél fogva szöveges formátum, ennek ellenére tökéletesen lehetővé teszi bármilyen adat tárolását és továbbítását. Mivel ez a formátum szöveges, a platformközi jellegének problémája magától megoldódik, és az XML adatok átadásának problémája is ugyanolyan könnyen megoldható (mint például a SOAP-ban). Ezenkívül egyszerűen módosíthatja az átviteli vagy tárolási formátumot új attribútumok hozzáadásával, és nem kell túl sokat aggódnia a formátum korábbi verzióival való kompatibilitás miatt, mivel a régi verziót használó alkalmazások képesek lesznek elolvasni azt, amire szükségük van, anélkül, hogy figyelmet kellene fordítaniuk az új címkékre. vagy attribútumok.. Sok alkalmazás XML-alapú fájlformátumot használ, sok kommunikációs protokoll szintén XML-alapú, és mindkettő listája folyamatosan bővül.

Másrészt persze az XML nem túl gazdaságos, mert ahogy a Computer News fórum egyik látogatója egykor helyesen megjegyezte, az XML dokumentumok gyakran 10%-ban adatból és 90%-ban tagekből állnak. Ez azonban már nagyban függ attól, hogy milyen címkéket választasz. Tudsz írni utca. Melnikaite, 2, Tudok . Bár őszintén szólva számomra úgy tűnik, hogy a jelenlegi merevlemezek és vastag csatornák mellett nincs értelme különösebben zsugorítani.

Képes kezekben tehát az XML egy erős és kényelmes dolog, és ennek a formátumnak a mindenütt elterjedtsége miatt egyáltalán nem lehet eljutni vele. Térjünk tehát tovább a programkód írására.

A programozáshoz a .NET platform fő nyelvét, a C#-t fogjuk használni. Annak érdekében, hogy minél több olvasó gyakorolhassa magának a fenti programkódot, a C # első verzióját és a .NET Framework "a.


Adatrögzítés

Először is beszéljünk az adatok írásáról, mert tudod, ahhoz, hogy valahonnan kiolvass valamit, először írnod ​​kell valamit valahova. És amint programozással foglalkozunk, akkor nem illik "fogantyúkkal" XML adatokat létrehoznunk. Ezért először foglalkozzunk az adatok XML-ben történő írásával.

A kezdéshez hozzon létre egy új projektet a Visual Studio, a #Develop vagy a C# Builder alkalmazásban, és adja hozzá a System.Xml fájlt az importált névterek listájához.

Egy speciális XmlTextWriter osztály felel az XML adatok írásáért a .NET Frameworkben, amely lehetővé teszi, hogy XML adatokat írjunk egy tetszőleges adatfolyamba, vagyis általánosságban elmondható, hogy fájlba, adatbázisba írhatjuk vele azokat, és elküldi valakinek az interneten keresztül, de egyelőre mindent fájlba írunk. A kimenetet átirányíthatja az objektumkonstruktor megváltoztatásával (azaz inicializáláskor nem a fájl nevét és kódolását adva át, hanem egy adatfolyamot tartalmazó objektumot Azt hiszem, egy kicsit előre haladok önmagam előtt, ezért először vessünk egy pillantást arra a kódra, amely felelős az adatok XML-fájlunkba írásáért.

String FileName = "c:\\demo.xml"; XmlTextWriter xml = new XmlTextWriter(Fájlnév, Rendszer.Szöveg.Kódolás.Unicode); xml.Formatting = Formázás.Behúzott; xml.WriteStartDocument(); xml.WriteStartElement("gyökérelem"); for (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();

Az első sor szerintem teljesen egyértelmű - ez csak annak a fájlnak a nevének rögzítése, amelybe az adatokat menteni fogjuk. Ezután létrehozunk egy XmlTextWriter típusú objektumot (ezt, mint látod, xml-nek hívják), és ezzel hajtjuk végre az összes további műveletet. Figyeljük meg, hogy az objektum felépítésénél megadjuk azt a kódolást is, amelyben az XML-t írjuk: példánkban ez a Unicode. A következő sor általánosságban nem kötelező, de az XML-dokumentumunkat, ahogy mondani szokták, ember által olvashatóvá teszi, azaz hozzáadja a szükséges behúzásokat és sorokra bontja. Enélkül a teljes dokumentum egy sorba kerülne, ami bár helytakarékos, kézi szerkesztésre gyakorlatilag alkalmatlanná teszi.

A dokumentum írása az xml objektumunk WriteStartDocument () metódusának meghívásával kezdődik. Az őt követő sor hozzáadja a root elem gyökérelemet XML dokumentumunkhoz (emlékezzünk vissza, XML dokumentumok esetén a gyökérelemnek egyetlen példányban kell jelen lennie). Ezután egy ciklusban tíz további, szemantikai terhelést nem hordozó elemet adunk az XML dokumentumunkhoz, amelyek mindegyikéhez két attribútumot és tíz további alelemet adunk meg. Kérjük, vegye figyelembe, hogy hozzáadhatunk egy számot egy karakterlánchoz anélkül, hogy kifejezetten konvertálnánk az adatokat, de ha a számnak teljesen karakterláncot kell alkotnia, akkor azt kifejezetten a ToString() metódussal kell konvertálni. Vegye figyelembe azt is, hogy kifejezetten be kell zárnunk XML-dokumentumunk minden egyes elemét, majd a teljes dokumentumot.

Most, hogy az XML dokumentumunkat sikeresen megírtuk, nézzük meg, hogyan tudunk belőle adatokat olvasni.


Adatok olvasása

Adjon hozzá egy listBox komponenst az alkalmazás űrlapjához (kivéve persze, ha konzolról van szó), hogy figyelemmel kísérhesse az XML fájl beolvasásának eredményét. Nos, ha a programod konzolos, akkor könnyen átirányíthatod a kimenetet a konzolra.

Szokás szerint először a programkóddal ismerkedünk, majd meglátjuk, hogy ez a kód pontosan mit is csinál.

XmlTextReader xml = new XmlTextReader(Fájlnév); xml.WhitespaceHandling = WhitespaceHandling.Nincs; int i = 0; while (xml.Read())( if ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "alelem")) ( listBox1.Items.Add("alelem " + i + " található") i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); listBox1.Items.Add(" " + xml.GetAttribute("attrib2")); while (xml.Read()&( xml.Name == "alalelem"))( listBox1.Items.Add(" " + xml.GetAttribute("attr")); ) ) ) xml.Close();

Az olvasáshoz, ahogy észrevetted, egy másik osztályt használunk, mégpedig az XmlTextReader-t. Ugyanabban a névtérben van, mint az osztály, amelyet az adatok írásához használtunk. Az első sorban létrehozunk egy xml nevű XmlTextReader-példányt (itt feltételezzük, hogy a FileName változót már korábban definiáltuk) Az üres sorok kihagyásához, ha ezek valamilyen érthetetlen módon előfordulnak az újonnan létrehozott XML fájlunkban, használjuk a fenti kódrészletben a következő sor. Az i változó az XML-fájlban található "alelem" elemek számának számlálására szolgál, amelyből az adatokat olvassák.

Ezután következik az adatok közvetlen kiolvasásának ciklusa a fájlból. A Read() metódus beolvassa az XML dokumentum következő elemét, majd annak elolvasása után ellenőrizzük, hogy pontosan mit is olvasunk. Ha valóban "alelem", akkor a listBox1-be adjuk az olvasott elemre vonatkozó információkat, növeljük az olvasott elemek számát tartalmazó változót, majd beolvassuk az elem attribútumait. Az attribútumok beolvasása után külön ciklust szervezünk az "alelem" alelemek (ehhez nem kell külön XmlTextReader) és ezen alelemek attribútumai beolvasására. Az eddigiekhez hasonlóan az összes olvasott információt beírjuk a listBox1-be a vezérléshez. a helyes olvasat.

XML fájlok olvasásakor, ugyanúgy, mint írásukkor, egy XmlTextReader "a" konstruálásakor paraméterként megadhatja azt a folyamot, amelyből az olvasás történjen, és akkor nem csak fájlokból lehet olvasni, hanem más forrásokból is , amelyekre fentebb már hoztam példákat.Az XmlTextReader osztály egyik hasznos tulajdonságát meg kell jegyezni: olvasáskor nem tölti be a teljes olvasható XML dokumentumot a memóriába, így kényelmesen használható elemzésre. nagy XML dokumentumok (például XML adatbázisok).


A színfalak mögött

Általánosságban elmondható, hogy az imént elemzett példa túl egyszerű a valós projektekhez. Manapság az XML dokumentumok olvasásakor általában DTD, XML Schema vagy Relax NG segítségével validálják azokat. Az érvényesítés annak ellenőrzése, hogy egy XML-dokumentum jelölése megfelel-e valamilyen külső fájlban leírt szabványnak. Érvényesítésre azért van szükség, hogy a dokumentumellenőrzés ne legyen bekötve a programalgoritmusba, hanem tetszőlegesen megváltozhasson az adatformátum megváltoztatásakor anélkül, hogy frissítené az adatokat olvasó vagy író programkódot. Sajnos most nem lesz időnk elemezni az érvényesítést, mert mint Önök is tudják, egy újságcikk terjedelmének vannak bizonyos korlátai.

Egy másik érdekes és hasznos gyakorlati szempont az XML adatokkal való munkavégzés során az XSL adattranszformáció. Ezt az átalakítást a rendszer az adatokra alkalmazza, amikor azok HTML-oldalakon jelennek meg, és valójában egyszerűen egy bizonyos weboldal-sablon alkalmazása bizonyos adatokat tartalmazó XML-fájlhoz. Mivel az XML-adatok jelenlegi felhasználásának oroszlánrésze így vagy úgy a világhálóra esik, nagyon-nagyon jó lenne megfontolni az XSL-átalakításokat.

Szóval szerintem ennek a cikknek lesz folytatása - de persze csak akkor, ha te magad (vagyis a Computer News olvasói) rákérdezel a fórumon vagy az email címemre írt levélben. Egyelőre az XML .NET alkalmazásokban való használatáról talán ennyi. Remélhetőleg ez az információ hasznos lesz az Ön számára.