Ako otvoriť XML dokument - funkcie práce s XML súbormi. Práca s XML v .NET aplikáciách Čo je XML

Domov / Windows 7

Pravdepodobne ste už počuli o XML a poznáte veľa dôvodov, prečo by sa mal používať vo vašej organizácii. Ale čo presne je XML? Tento článok vysvetľuje, čo je XML a ako funguje.

V tomto článku

Značky, značky a značky

Na pochopenie XML je užitočné zapamätať si, ako môžete označiť údaje. Dokumenty vytvárali ľudia počas mnohých storočí a počas toho času si do nich ľudia robili poznámky. Učitelia si napríklad často robia poznámky o práci študentov, čo naznačuje potrebu presunúť odseky, urobiť vetu jasnejšou alebo opraviť pravopisné chyby atď. Označením dokumentu môžete určiť štruktúru, význam a vzhľad informácie. Ak ste niekedy použili rýchle opravy v Microsoft Office Word, potom ste oboznámení s počítačovým značkovacím formulárom.

vo svete informačných technológií pojem "označenie" sa zmenil na pojem "označenie". Značky používajú kódy nazývané značky (alebo niekedy tokeny) na definovanie štruktúry, vizuálneho vzhľadu a – v prípade XML – významu údajov.

Text tohto článku v HTML formát je dobrý príklad aplikácia počítačových značiek. Ak v spoločnosti Microsoft Internet Explorer kliknite na túto stránku kliknite pravým tlačidlom myši myšou a vyberte príkaz Zobraziť HTML kód, uvidíte čitateľný text a HTML tagy ako

A

. V dokumentoch HTML a XML sú značky ľahko rozpoznateľné, pretože sú uzavreté v lomených zátvorkách. V zdrojovom texte tohto článku vykonávajú značky HTML mnoho funkcií, napríklad definujú začiatok a koniec každého odseku (

...

) a umiestnenie výkresov.

Vlastnosti XML

Dokumenty HTML a XML obsahujú údaje uzavreté v značkách, ale tu sa podobnosti medzi týmito dvoma jazykmi končia. Vo formáte HTML tagy určujú dizajn údajov - umiestnenie nadpisov, začiatok odseku atď. Vo formáte XML značky určujú štruktúru a význam údajov - čo to je.

Popísaním štruktúry a významu údajov je možné ich opätovne použiť niekoľkými spôsobmi. Napríklad, ak máte blok údajov o predaji, v ktorom je každý prvok jasne definovaný, môžete do výkazu predaja načítať len potrebné prvky a ostatné údaje preniesť do účtovnej databázy. Inými slovami, môžete použiť jeden systém na generovanie a označovanie údajov vo formáte XML a potom tieto údaje spracovať v iných systémoch bez ohľadu na platformu klienta alebo operačný systém. Táto kompatibilita robí z XML základ jednej z najpopulárnejších technológií výmeny údajov.

Pri práci dbajte na nasledovné:

    HTML nie je možné použiť namiesto XML. Údaje XML však možno uzavrieť do značiek HTML a zobraziť na webových stránkach.

    Možnosti HTML sú obmedzené na preddefinovanú sadu značiek, ktoré sú spoločné pre všetkých používateľov.

    Pravidlá XML vám umožňujú vytvárať akékoľvek značky potrebné na popis údajov a ich štruktúry. Povedzme, že potrebujete ukladať a zdieľať informácie o svojich miláčikoch. Ak to chcete urobiť, môžete vytvoriť nasledujúci kód XML:

    Izzy siamská 6 áno č Izz138bod Colin Wilcox

Ako vidíte, značky XML jasne ukazujú, aké údaje si prezeráte. Napríklad je jasné, že údaje sú o mačke a môžete ľahko určiť jej meno, vek atď. Pretože môžete vytvárať značky, ktoré definujú takmer akúkoľvek štruktúru údajov, XML je rozšíriteľné.

Nezamieňajte si však značky v tomto príklade so značkami v súbore HTML. Ak sa napríklad vyššie uvedený text XML vloží do súboru HTML a otvorí sa v prehliadači, výsledky budú vyzerať takto:

Izzy Siamese 6 áno nie Izz138bod Colin Wilcox

Webový prehliadač bude ignorovať značky XML a zobrazí iba údaje.

Dobre spracované údaje

Pravdepodobne ste už počuli niekoho z IT hovoriť o „dobre sformovanom“ súbore XML. Správne vytvorený súbor XML musí spĺňať veľmi prísne pravidlá. Ak sa neriadi týmito pravidlami, XML nebude fungovať. Napríklad v predchádzajúcom príklade má každá otváracia značka zodpovedajúcu uzatváraciu značku, takže tento príklad sa riadi jedným z pravidiel správne vytvoreného súboru XML. Ak zo súboru odstránite značku a pokúsite sa ju otvoriť v niektorom z programov balíka Office, zobrazí sa chybové hlásenie a takýto súbor nebude možné použiť.

Nemusíte poznať pravidlá na vytvorenie správne vytvoreného súboru XML (hoci nie je ťažké im porozumieť), ale nezabudnite, že v iných aplikáciách a systémoch možno použiť iba správne vytvorené údaje XML. Ak sa súbor XML neotvorí, je pravdepodobne poškodený.

XML je nezávislý na platforme, čo znamená, že akýkoľvek program navrhnutý na používanie XML môže čítať a spracovávať údaje XML bez ohľadu na hardvér alebo operačný systém. Napríklad, ak použijete správne značky XML, môžete použiť počítačový program na otvorenie a spracovanie údajov prijatých zo sálového počítača. A bez ohľadu na to, kto vytvoril údaje XML, s údajmi možno manipulovať v rôznych aplikáciách balíka Office. Vďaka svojej kompatibilite sa XML stalo jednou z najpopulárnejších technológií na výmenu údajov medzi databázami a počítačmi používateľov.

Okrem dobre tvarovaných označených údajov systémy XML zvyčajne používajú dve ďalšie komponenty: schémy a transformácie. Nasledujúce časti popisujú, ako fungujú.

Schémy

Nenechajte sa zastrašiť pojmom „schéma“. Schéma je jednoducho súbor XML, ktorý obsahuje pravidlá pre obsah dátového súboru XML. Súbory schém majú zvyčajne príponu XSD, zatiaľ čo dátové súbory XML používajú príponu XML.

Schémy umožňujú programom overovať údaje. Tvoria štruktúru údajov a zabezpečujú, aby boli zrozumiteľné pre tvorcu a ostatných ľudí. Ak napríklad používateľ zadá neplatné údaje, napríklad text do poľa dátumu, program môže používateľa vyzvať, aby ich opravil. Ak sa údaje v súbore XML zhodujú s pravidlami v schéme, na ich čítanie, interpretáciu a spracovanie môžete použiť ľubovoľný program s podporou XML. Napríklad, ako je znázornené na obrázku nižšie, Excel dokáže overiť údaje za súlad so schémou CAT.

Obvody môžu byť zložité a tento článok nedokáže vysvetliť, ako ich vytvoriť. (Aj vo vašej organizácii sú pravdepodobne IT ľudia, ktorí vedia, ako to urobiť.) Je však užitočné vedieť, ako diagramy vyzerajú. Nasledujúci diagram definuje pravidlá pre sadu značiek ... :

Nebojte sa, ak príklad nie je jasný. Len venujte pozornosť nasledovnému:

    Prvky reťazca v vzorovej schéme sa nazývajú deklarácie. Ak by sa vyžadovali ďalšie informácie o zvierati, ako je jeho farba alebo špeciálne vlastnosti, oddelenie IT by do diagramu pridalo príslušné vyhlásenia. Systém XML je možné upravovať podľa toho, ako sa vyvíjajú obchodné potreby.

    Deklarácie sú účinným prostriedkom na manipuláciu s dátovou štruktúrou. Napríklad reklama znamená, že značky ako napr A , musí nasledovať vo vyššie uvedenom poradí. Reklamy môžu tiež overiť typy používateľských vstupov. Napríklad vyššie uvedený obvod vyžaduje kladné celé číslo pre vek mačky a booleovské hodnoty (TRUE alebo FALSE) pre značky ALTERED a DECLAWED.

    Ak údaje v súbore XML dodržiavajú pravidlá schémy, údaje sa považujú za platné. Proces overovania, či dátový súbor XML vyhovuje pravidlám schémy, sa nazýva (dosť logicky) validácia. Veľkou výhodou používania schém je, že môžu zabrániť poškodeniu údajov. Schémy tiež uľahčujú vyhľadávanie poškodených údajov, pretože spracovanie súboru XML sa zastaví, keď sa vyskytne problém.

Premeny

Ako bolo uvedené vyššie, XML tiež umožňuje efektívne využitie a opätovné použitie údajov. Mechanizmus opätovného použitia údajov sa nazýva transformácia XSLT (alebo jednoducho transformácia).

Vy (alebo vaše IT oddelenie) môžete tiež použiť transformácie na výmenu údajov medzi back-end systémami, ako sú napríklad databázy. Predpokladajme, že databáza A ukladá údaje o predaji do tabuľky, ktorá je užitočná pre obchodné oddelenie. Databáza B uchováva údaje o príjmoch a výdavkoch v tabuľke špeciálne určenej pre účtovníctvo. Databáza B môže použiť transformáciu na prevzatie údajov z databázy A a ich vloženie do príslušných tabuliek.

Kombinácia dátového súboru, schémy a transformácie tvorí základný XML systém. Nasledujúci obrázok znázorňuje fungovanie takýchto systémov. Dátový súbor je skontrolovaný podľa pravidiel schémy a potom odovzdaný akýmkoľvek vhodným spôsobom na transformáciu. V tomto prípade transformácia umiestni údaje do tabuľky na webovej stránke.

Nasledujúci príklad ukazuje transformáciu, ktorá načítava údaje do tabuľky na webovej stránke. Účelom príkladu nie je vysvetliť, ako vytvárať transformácie, ale ukázať jednu z foriem, ktoré môžu mať.

Meno Plemeno Vek Pozmenené Bez pazúrov Licencia Vlastník

Tento príklad ukazuje, ako môže vyzerať text jedného typu transformácie, ale nezabudnite, že sa môžete obmedziť na jasný popis toho, čo z údajov potrebujete, a tento popis môžete urobiť vo svojom rodnom jazyku. Môžete napríklad ísť na oddelenie IT a povedať, že potrebujú vytlačiť údaje o predaji pre konkrétne regióny za posledné dva roky a že informácie by mali vyzerať takto a takto. Oddelenie potom môže napísať (alebo upraviť) transformáciu, aby splnila vašu požiadavku.

Microsoft a rastúci počet ďalších spoločností vytvárajú transformácie na rôzne účely, vďaka čomu je používanie XML ešte pohodlnejšie. V budúcnosti bude pravdepodobne možné stiahnuť konverziu, ktorá vyhovuje vašim potrebám, s malým alebo žiadnym ďalším prispôsobením. To znamená, že postupom času bude používanie XML čoraz lacnejšie.

XML v systéme Microsoft Office

Profesionálne vydania balíka Office poskytujú rozšírenú podporu XML. Počnúc systémom Microsoft Office 2007 používa Microsoft Office formáty súborov založené na XML, ako sú DOCX, XLSX a PPTX. Pretože XML ukladá údaje v textovom formáte a nie v proprietárnom binárnom formáte, klienti môžu definovať svoje vlastné schémy a používať vaše údaje rôznymi spôsobmi bez toho, aby museli platiť licenčné poplatky. Ďalšie informácie o nových formátoch nájdete v téme Otvorené formáty XML a prípony názvov súborov. Nižšie sú uvedené ďalšie výhody.

To všetko je skvelé, ale čo ak máte údaje XML bez schémy? Záleží na čom Kancelársky program používate. Napríklad, keď v Exceli otvoríte súbor XML bez schémy, predpokladá sa, že schéma existuje, a umožní vám načítať údaje do tabuľky XML. Na triedenie, filtrovanie a výpočet údajov môžete použiť zoznamy a tabuľky XML.

Povoľte funkcie XML v balíku Office

V predvolenom nastavení sa karta Vývojár nezobrazuje. Ak chcete používať príkazy XML v Office, musíte ho pridať na pás s nástrojmi.

Predchádzajúci článok popisoval všeobecné pojmy týkajúce sa XML. V tomto článku sa naučíme, ako vykonávať základné akcie súvisiace so zmenou, pridávaním, vyhľadávaním v súbore XML.

XML súbor, ktorý sa používa v príklade.

Mazda 2007 BMW 2009

xml dom

IN momentálne, náš súbor obsahuje nasledujúcu štruktúru:

Vzťah medzi uzlami v XML DOM, hlavné body:

1. Každý uzol v strome DOM má nadradený ParentNode. V našom príklade je garáž rodičom oboch prvkov auta a oba prvky auta sú zase rodičmi prvkov modelu a ročníka.

Ako získať rodič prvku xml auta?

Console.WriteLine(elmRoot["auto"].ParentNode.Name); //Výsledok: garáž

2. Rodič môže mať deti ChildNodes. Napríklad pre garážový uzol sú deti obe prvky auta. Prvky auta majú aj detský model a rok výroby.

ChildNodes, je kolekcia, ktorá ukladá všetky podradené prvky xml, aby ste získali prístup k požadovanému prvku, musíte zadať jeho index. (Index vždy začína od nuly!)

Napríklad: ako získať prvý podradený prvok?

ElmRoot.ChildNodes;

3. Ako v bežnom živote, dieťa sa môže narodiť ako prvé prvé dieťa, alebo posledné dieťa.

Ak si ako príklad vezmeme prvok auta, tak potom

FirstChild je model LastChild je rok

4. Medzi detskými prvkami sú zase spojenia, môžu to byť bratia alebo sestry, ak ideme do paralely so skutočným životom.

Dieťa môže mať napríklad brata predchádzajúceho súrodenca a brata nasledujúceho súrodenca

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Výsledok: rok Console.WriteLine(elmRoot.ChildNodes.LastChild.PreviousSibling.Name); //Výsledok: model

Ak sa prvok nenájde, vyvolá sa výnimka: NullReferenceException, takže pri práci s xml vždy používajte bloky try catch.

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

LastChild je NextSibling;
FirstChild je predchádzajúciSibling;

Pomocou vyššie opísaných metód sa môžete ľahko presunúť na požadovaný uzol a získať akúkoľvek hodnotu, ktorú potrebujete.

Ako získať hodnotu prvku xml?

Hodnotu xml prvku možno získať pomocou vlastnosti InnerText, napríklad:

Console.WriteLine(elmRoot["auto"].FirstChild.InnerText); //Výsledok: Mazda

Ďalší spôsob, ako získať rovnakú hodnotu prvku xml:

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Výsledok: Mazda

Postupnosť pohybov pozdĺž stromu DOM:

Garáž -> auto -> model -> Mazda

Dostávame rok:

ElmRoot["auto"].LastChild.InnerText; //Výsledok: 2007

Následná sekvencia:

Garáž -> auto -> rok -> 2007

Ďalší príklad: 3 spôsoby, ako dosiahnuť rovnaký výsledok.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["auto"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Výsledok: BMW

Ak potrebujete získať rok pre prvok s hodnotou Mazda:

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Výsledok: 2007

Pre BMW (dva spôsoby, získajte rovnaký výsledok)

Console.WriteLine(elmRoot.ChildNodes.Item(1).ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Výsledok: 2009

Ako zmeniť hodnoty prvkov xml?

Používanie majetku InnerText() Môžete získať aj zmeniť hodnotu prvku xml, napríklad zmeniť rok.

//Nastavte novú hodnotu elmRoot.FirstChild.LastChild.InnerText = "2010"; //Zobrazenie novej hodnoty na obrazovke konzoly Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Výsledok: 2010

Zároveň si musíte uvedomiť, že všetky zmeny sa vyskytnú s virtuálnym súborom xml, ak otvoríte fyzický súbor, uvidíte, že v ňom je stále uvedený rok 2007.

Aby sa zmeny prejavili, musíte použiť metódu Uložiť, napríklad:

ElmRoot.Save("názov xml súboru alebo stream");

Teraz sa informácie zmenia vo „fyzickom“ súbore xml.

Ako získať počet podradených prvkov?

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

garáž -> auto obsahuje 2 deti: model a roč

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

garáž -> auto -> model obsahuje 1 detský xml prvok.

Prístup k detským prvkom

podľa indexu

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Výsledok: auto

Pomocou slučky

Foreach (XmlNode nod v elmRoot.ChildNodes) ( Console.WriteLine(nod.Name); ) //Výsledok: auto, auto

Ako získať názov prvku xml?

elmRoot.Name; //Výsledok: garáž

Vytvorenie nového prvku XML

Vytvorme nový prvok v našom XML dokumente tak, aby sa líšil od ostatných dvoch (auto), nazvime ho autobus.

Pri vytváraní nového prvku použijeme odporúčanie zo stránky msdn a namiesto štandardného nového XmlElement použijeme metódu CreateElement.

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

Vytvorenie a pridanie nového prvku xml

Vytvorme nový prvok xml s názvom „BUS“.

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //auto, auto XmlElement elmNew = xmlDoc.CreateElement("bus"); elmRoot.AppendChild(elmNew); Console.WriteLine(elmRoot.ChildNodes.Count); //3 auto, auto, autobus xmlDoc.Save("názov xml súboru");

Vysvetlenie:

1. Najprv získame koreňový prvok, ku ktorému budeme pripájať nové prvky.

2. Ako kontrolu zobrazíme aktuálny počet podradených prvkov prvku garáže: 2 (auto a auto)

3. Vytvorte nový prvok BUS

4. Použitie metódy AppendChild pridanie nového prvku do stromu

5. Opäť použijeme kontrolu a zobrazíme aktuálny počet prvkov pre prvok garáže, teraz sú 3: auto, auto, autobus.

6. Aby zmeny ovplyvnili fyzický súbor, uložte ho

V samotnom súbore XML bude nový prvok vyzerať takto:

Ako pridať nový prvok xml?

Úloha: vytvorte nový XML element a pridajte doň nejaký textový obsah, napríklad rok výroby.

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

V súbore XML:

2006

Pre prehľadnosť

Teraz vytvorte „autobusový“ uzol s rovnakou architektúrou ako auto, to znamená, pridajte uzly: model, rok a nejaký textový obsah.

Vytvorenie prvku XML s deťmi

string strFilename = @"C:\lessons\Auto.xml"; //vytvorte nový xml dokument v pamäti XmlDocument xmlDoc = new XmlDocument(); //načítanie xml súboru do pamäte xmlDoc.Load(strFilename); //Získanie koreňového prvku XmlElement elmRoot = xmlDoc.DocumentElement; //Vytvorenie 3 prvkov: zbernica, model, rok XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("rok"); //Nastavte hodnoty pre prvky: model, rok XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); pridať inak //Pridanie dvoch podradených prvkov k prvku zbernice: model a rok elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); //Pridanie hodnôt do uzlov modelu a roku elmModel.InnerText = "liaz"; elmYear.AppendChild(year_txt); //Pridanie novej zbernice prvkov xml do stromu elmRoot.AppendChild(elmBUS); //Skontrolujte, či je všetko pridané tak, ako má Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Ak je všetko v poriadku, potom použite metódu Uložiť xmlDoc.Save("názov súboru xml");

výsledok:

liaz 2006

Ako môžem skrátiť tento kód? Napríklad takto:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("rok"); //Pridanie hodnôt do uzlov modelu a roku elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); elmRoot.AppendChild(elmBUS); //Ak je všetko správne, potom zavolajte metódu Save xmlDoc.Save("názov súboru xml");

Skrátime kód ešte trochu, na to použijeme vlastnosť InnerXml:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); string txt = " liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (bude sa rovnať garáži) – toto je ďalší spôsob prístupu ku koreňovému prvku, rovnaký ako XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild ( elmXML) xmlDoc.Save(PathXmlFile);

Výsledok

Získajte zoznam prvkov pomocou GetElementByTagName

Vráti GetElementByTagName XmlNodeList, ktorý obsahuje všetky podradené prvky patriace k zadanému prvku, napríklad potrebujeme získať všetky modely áut, ktoré sú uložené v garáži:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); foreach (uzol XmlNode v modeliName) ( Console.WriteLine(node.InnerText); ) //Výsledok: mazda, bmw, liaz

Prístup pomocou indexu:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(názov modelu.VnútornýText); //Výsledok: liaz

Ako môžem pomocou metódy GetElementByTagName zmeniť textový obsah novovytvoreného prvku „zbernice“?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(názov modelu.VnútornýText); //Prijatá hodnota: liaz

Alebo si môžete zmeniť názov liaz na Ikarus

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

Extensible Markup Language (XML). Je to naozaj jednoduché textové súbory, ktoré používajú vlastné značky na popis štruktúry a ďalších funkcií dokumentu.

Čo je XML

XML je značkovací jazyk vytvorený konzorciom World Wide Web Consortium (W3C) na definovanie syntaxe na kódovanie dokumentov, ktoré môžu čítať ľudia a stroje. Robí to prostredníctvom značiek, ktoré definujú štruktúru dokumentu, ako aj spôsob, akým sa má dokument uchovávať a prepravovať.

Najjednoduchší spôsob, ako ho porovnať s iným značkovacím jazykom, ktorý možno poznáte, je hypertextové označenie(HTML) používané na kódovanie webových stránok. HTML používa preddefinovanú sadu značkovacích znakov (krátkych kódov), ktoré popisujú formát obsahu na webovej stránke.

Rozdiel oproti XML je však v tom, že je rozšíriteľný. XML nemá preddefinovaný značkovací jazyk ako HTML. Namiesto toho XML umožňuje používateľom vytvárať si vlastné značkovacie znaky na popis obsahu, čím sa vytvára neobmedzená a samodefinujúca množina znakov.

HTML je v podstate jazyk, ktorý sa zameriava na prezentáciu obsahu, zatiaľ čo XML je vyhradený jazyk na popis údajov, ktorý sa používa na ukladanie údajov.

XML sa často používa ako základ pre ďalšie formáty dokumentov, ktorých sú stovky. Tu je niekoľko, ktoré by ste mohli chcieť vedieť:

  • RSS a ATOM popisujú, ako by mali aplikácie zaobchádzať s webovými kanálmi.
  • Microsoft .NET používa XML pre svoje konfiguračné súbory.
  • Microsoft Office používa XML ako základ pre štruktúru dokumentu.

Ak teda máte súbor XML, nemusí vám nevyhnutne povedať, na akú aplikáciu je určený. Toho sa však nemusíte obávať, pokiaľ nevyvíjate súbory XML.

Ako otvoriť súbor XML

Existuje niekoľko spôsobov, ako priamo otvoriť súbor XML. Môžete ich otvárať a upravovať pomocou ľubovoľného textového editora, prezerať si ich pomocou ľubovoľného webového prehliadača alebo použiť webovú stránku, ktorá vám ich umožňuje prezerať, upravovať a dokonca prevádzať do iných formátov.

Pri pravidelnej práci s XML používajte textový editor

Keďže súbory XML sú jednoducho textové súbory, možno ich otvoriť v ľubovoľnom textovom editore. Mnohé textové editory, ako napríklad Poznámkový blok, však jednoducho nie sú navrhnuté tak, aby zobrazovali súbory XML so správnou štruktúrou. To môže byť užitočné na rýchle zoznámenie sa s obsahom súboru XML. Na prácu s nimi však existujú pohodlnejšie nástroje.


Použitie webového prehliadača na zobrazenie súboru XML

Ak nepotrebujete upravovať súbor XML, ale chcete len zobraziť obsah, váš prehliadač túto úlohu zvládne. Okrem toho je váš webový prehliadač s najväčšou pravdepodobnosťou už nakonfigurovaný ako štandardná náprava prezeranie XML súborov. Takže dvojitým kliknutím na súbor XML by sa mal otvoriť v prehliadači.

Ak nie, môžete kliknúť pravým tlačidlom myši na súbor a nájsť možnosti na jeho otvorenie v akejkoľvek inej aplikácii. Jednoducho vyberte svoj webový prehliadač zo zoznamu programov.

Keď sa súbor otvorí, mali by ste vidieť dobre štruktúrované údaje. Nie je to také pekné ako farebný vzhľad, ktorý získate v programe Notepad++, ale je to oveľa lepšie ako v poznámkovom bloku.

Používanie online editora pre súbory XML

Ak chcete upraviť náhodný súbor XML a nechcete sťahovať nový textový editor, alebo potrebujete previesť xml súbor do iného formátu Existuje niekoľko slušných online editorov XML dostupných zadarmo.

TutorialsPoint.com, XMLGrid.net a CodeBeautify.org - Umožňujú vám prezerať a upravovať súbory XML. Po dokončení úprav si môžete upravený súbor XML stiahnuť alebo ho dokonca previesť do iného formátu.

Napríklad používame CodeBeautify.org. Stránka je rozdelená na tri časti. Vľavo je súbor XML, s ktorým pracujete. V strede nájdete niekoľko funkcií. Na pravej strane uvidíte výsledky niektorých možností, z ktorých si môžete vybrať.

Napríklad na obrázku nižšie je náš úplný súbor XML vľavo a tabla výsledkov zobrazuje stromové zobrazenie, pretože sme klikli na tlačidlo Stromové zobrazenie v strede.

Pomocou tlačidla Prehľadávať načítajte súbor XML z počítača alebo pomocou tlačidla Načítať adresu URL načítajte súbor XML z online zdroja

Tlačidlo Stromové zobrazenie zobrazuje údaje v dobre naformátovanej stromovej štruktúre na table výsledkov, pričom všetky značky sú zvýraznené oranžovou farbou a atribúty napravo od značiek.

Beatify zobrazuje vaše údaje v prehľadnom a ľahko čitateľnom formáte.

Tlačidlo Minifikovať zobrazuje vaše údaje s použitím čo najmenšieho počtu medzier. Táto funkcia umiestni každý údaj na jeden riadok. To sa vám bude hodiť pri pokuse o zmenšenie súboru, čo ušetrí miesto.

Nakoniec môžete použiť tlačidlo XML na JSON XML transformácie do formátu JSON a tlačidlo Exportovať do CSV na uloženie údajov ako súbor s hodnotami oddelenými čiarkami alebo tlačidlo Stiahnuť na stiahnutie akýchkoľvek zmien, ktoré ste vykonali v novom súbore XML.

Odkedy som sľúbil porozprávať o práci s dátami vo formáte XML pri vývoji .NET aplikácií, ubehlo už dosť dlho. Sľuby treba dodržiavať. Upozorňujeme, že tento článok nie je určený pre profesionálnych .NET vývojárov, ale pre tých, ktorí ešte nemajú výraznejšie skúsenosti s tvorbou .NET aplikácií.


Prečo by sme mali pracovať s XML?

Ak ešte nemáte veľmi dobrú predstavu o tom, čo je XML, potom odporúčam prečítať si článok „XML to myslí vážne a nadlho“ v „KV“ č. za rok 2007. Aby sme ušetrili miesto na dôležitejšie veci, nebude tu analyzovaný samotný formát XML.

Predtým, ako sa pustíte do oboznamovania sa s programovým kódom, musíte si zodpovedať jednu zásadnú otázku: prečo do svojej aplikácie vôbec zahrnúť podporu XML? Myslím si, že túto otázku si v súvislosti s mnohými technológiami položilo veľa ľudí a nie všetky boli zahrnuté do aplikácií po odpovedi. V prípade XML je však situácia trochu iná a v mnohých situáciách existujú skutočné dôvody na použitie tohto formátu.

Hlavnou výhodou XML je, že ide o textový formát, no napriek tomu dokonale umožňuje ukladanie a prenos akýchkoľvek údajov. Keďže tento formát je textový, problém jeho multiplatformnosti je vyriešený sám osebe a rovnako jednoducho je vyriešený problém prenosu XML údajov (ako sa to robí napríklad v SOAP). Okrem toho môžete jednoducho zmeniť formát prenosu alebo ukladania údajov pridaním nových atribútov a bez starostí o kompatibilitu s predchádzajúcimi verziami formátu, pretože aplikácie používajúce starú verziu budú môcť čítať, čo potrebujú, bez toho, aby venovali pozornosť novým značky alebo atribúty. Mnoho aplikácií používa XML formáty súborov, mnohé protokoly prenosu údajov sú tiež založené na XML a zoznamy oboch sa stále rozrastajú.

Samozrejme, na druhej strane XML nie je príliš ekonomické, pretože, ako raz správne poznamenal jeden z návštevníkov fóra Computer News, XML dokumenty často pozostávajú z 10 % údajov a 90 % značiek. To však do značnej miery závisí od toho, aké značky si vyberiete. Môžete písať sv. Melnikaite, 2, je to možné . Aj keď, aby som bol úprimný, zdá sa mi, že so súčasnými pevnými diskami a hrubými kanálmi nemá zmysel byť obzvlášť komprimovaný.

Takže v správnych rukách je XML výkonná a pohodlná vec a kvôli všadeprítomnosti tohto formátu mu nemôžete uniknúť. Prejdime teda k písaniu programový kód.

Na programovanie budeme používať hlavný jazyk platformy .NET – C#. Aby si s daným programovým kódom precvičilo čo najviac čitateľov samo, použijem prvú verziu C# a .NET Framework.


Záznam údajov

Najprv si povedzme o zapisovaní údajov, pretože, viete, ak chcete niečo odniekiaľ prečítať, musíte najskôr niečo niekam zapísať. A keďže sme vy a ja začali programovať, nie je vhodné, aby sme XML dáta vytvárali manuálne. Začnime teda najskôr zápisom údajov do XML.

Najprv vytvorte nový projekt vo Visual Studio, #Develop alebo C# Builder a pridajte System.Xml do zoznamu importovaných menných priestorov.

Špeciálna trieda, XmlTextWriter, je zodpovedná za zápis XML dát v .NET Frameworku, ktorá vám umožňuje zapisovať XML dáta do ľubovoľného streamu, čiže všeobecne povedané, môžeme ich použiť na zápis do súboru, databázy , a poslať niekomu cez internet, ale teraz všetko zapíšeme do súboru Výstup môžete presmerovať zmenou konštruktora objektu (t. j. neodovzdaním názvu súboru a jeho kódovania počas inicializácie, ale objektu, ktorý je údajom. stream).

String Názov súboru = "c:\\demo.xml"; XmlTextWriter xml = new XmlTextWriter(Názov súboru, System.Text.Encoding.Unicode); xml.Formatting = Formátovanie.Odsadené; xml.WriteStartDocument(); xml.WriteStartElement("rootelement"); pre (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();

Prvý riadok je, myslím, celkom jasný – jednoducho zaznamenáva názov súboru, do ktorého dáta uložíme. Ďalej vytvoríme objekt typu XmlTextWriter (nazýva sa, ako vidíte, xml) a práve s ním vykonáme všetky ďalšie operácie. Upozorňujeme, že pri konštrukcii objektu špecifikujeme aj kódovanie, v ktorom bude XML zapísané: v našom príklade je to Unicode. Ďalší riadok vo všeobecnosti nie je potrebný, ale vďaka nemu bude náš dokument XML, ako sa hovorí, čitateľný pre ľudí, to znamená, že pridá potrebné zarážky a rozdelí ho na riadky. Bez toho by bol celý dokument napísaný v jednom riadku, čo síce šetrí miesto, no na manuálnu úpravu je prakticky nevhodný.

Písanie dokumentu začína volaním metódy WriteStartDocument() nášho xml objektu. Nasledujúci riadok pridáva koreňový prvok „rootelement“ do nášho XML dokumentu (pripomínam, že pre XML dokumenty musí byť koreňový prvok prítomný v jednej kópii). Ďalej v cykle pridávame do nášho XML dokumentu desať ďalších prvkov, ktoré nenesú žiadnu sémantickú záťaž, pre každý z nich nastavíme dva atribúty a desať ďalších podprvkov. Upozorňujeme, že k reťazcu môžeme pridať číslo bez explicitnej konverzie údajov, ale ak číslo musí tvoriť celý reťazec, musí sa skonvertovať explicitne pomocou metódy ToString(). Upozorňujeme tiež, že musíme explicitne zatvoriť každý prvok nášho dokumentu XML a potom celý dokument.

Teraz, keď bol náš dokument XML úspešne napísaný, pozrime sa, ako z neho môžeme čítať údaje.


Čítanie údajov

Pridajte do formulára svojej aplikácie komponent listBox (pokiaľ samozrejme nejde o konzolovú aplikáciu), aby ste mohli sledovať výsledok čítania XML súboru. No, ak je váš program konzolovým programom, potom môžete ľahko presmerovať výstup do konzoly.

Ako obvykle, najprv sa zoznámime s kódom programu a potom sa pozrieme na to, čo presne tento kód robí.

XmlTextReader xml = new XmlTextReader(FileName); xml.WhitespaceHandling = WhitespaceHandling.None; int i = 0; while (xml.Read())( if ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "podprvok")) ( listBox1.Items.Add("podprvok " + i + " nájdený") ; i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); )( listBox1.Items.Add(" " + xml.GetAttribute("attr")); ) ) ) xml.Close();

Na čítanie, ako ste si mohli všimnúť, používame inú triedu, a to XmlTextReader. Nachádza sa v rovnakom mennom priestore ako trieda, ktorú sme použili na zápis údajov. V prvom riadku vytvoríme inštanciu XmlTextReader s názvom xml (tu predpokladáme, že premennú FileName sme už predtým definovali, aby sme preskočili prázdne riadky, ak sa nejakým spôsobom nevysvetliteľne objavia v našom práve vytvorenom XML súbore). riadok v danom fragmente kódu Premenná i sa používa na počítanie počtu prvkov "podprvku" nájdených v súbore XML, z ktorého sa načítavajú údaje.

Nasleduje cyklus priameho čítania údajov zo súboru. Metóda Read() načíta ďalší prvok XML dokumentu a po jeho prečítaní skontrolujeme, čo presne čítame. Ak skutočne ide o prvok „subelement“, potom do listBox1 pridáme informácie o prečítanom prvku, inkrementujeme premennú obsahujúcu počet prečítaných prvkov a potom načítame atribúty prvku. Po prečítaní atribútov organizujeme samostatnú slučku na čítanie podprvkov (všimnite si, že na to nepotrebujeme samostatný XmlTextReader) a atribúty týchto podprvkov, ako predtým, zadáme všetky načítané informácie do listBox1, aby sme kontrolovali správnosť čítanie.

Pri čítaní súborov XML, rovnako ako pri ich písaní, pri konštrukcii XmlTextReader, môžete zadať ako parameter stream, z ktorého sa má čítať, a potom môžete čítať nielen zo súborov, ale aj z iných zdrojov, príklady čo som už uviedol vyššie Je potrebné poznamenať jednu užitočnú vlastnosť triedy XmlTextReader: pri čítaní nenačíta celý čítaný XML dokument do pamäte, takže je vhodné analyzovať veľké XML dokumenty (napríklad XML databázy). .


V zákulisí

Vo všeobecnosti je príklad, o ktorom sme práve hovorili, príliš jednoduchý pre skutočné projekty. V dnešnej dobe sa pri čítaní XML dokumentov väčšinou validujú pomocou DTD, XML Schema alebo Relax NG. Validácia je kontrola, či označenie dokumentu XML zodpovedá nejakému štandardu opísanému v externý súbor. Overenie je potrebné, aby overenie dokumentu nebolo pevne zapojené do programového algoritmu, ale bolo možné ho ľubovoľne zmeniť pri zmene formátu údajov bez aktualizácie programového kódu, ktorý číta alebo zapisuje údaje. Bohužiaľ, teraz nebudeme mať čas vyriešiť overenie, pretože, ako sami chápete, objem novinového článku má určité obmedzenia.

Ďalším zaujímavým a užitočným praktickým bodom týkajúcim sa práce s údajmi XML je transformácia údajov XSL. Táto transformácia sa aplikuje na údaje, keď sú zobrazené na stránkach HTML, a v skutočnosti jednoducho aplikuje špecifickú šablónu webovej stránky na súbor XML obsahujúci nejaké údaje. Keďže najväčší podiel súčasného používania údajov XML je tak či onak na World Wide Web, bolo by veľmi, veľmi dobré zvážiť transformácie XSL.

Takže si myslím, že tento článok bude mať pokračovanie – ale samozrejme len vtedy, ak sa naň vy sami (teda čitatelia Computer News) spýtate na fóre alebo listom na moju emailovú adresu. Zatiaľ je to pravdepodobne všetko o používaní XML v aplikáciách .NET. Dúfam, že tieto informácie sú pre vás užitočné.

Teraz budeme študovať prácu s XML.

XML je formát na výmenu údajov medzi stránkami.

Čo je API? Ide o súbor funkcií, pomocou ktorých môžete odoslať požiadavku na túto stránku a získať požadovanú odpoveď.

Táto odpoveď najčastejšie prichádza vo formáte XML. Začnime to teda študovať.

Práca s XML v PHP

Povedzme, že máte XML. Môže byť v reťazci alebo uložená v súbore, prípadne doručená na požiadanie na konkrétnu adresu URL. Nech je XML uložený v reťazci. V tomto prípade musíte vytvoriť objekt z tohto reťazca pomocou:

nový SimpleXMLElement $str = " 25 1000 Kolja

"; $xml = new SimpleXMLElement($str); Teraz máme v premennej$xml

je uložený objekt s analyzovaným XML. Prístupom k vlastnostiam tohto objektu získate prístup k obsahu značiek XML. Nižšie sa pozrieme na to, ako presne. Ak je XML uložený v súbore alebo odoslaný prístupom k URL (čo je najčastejšie prípad), potom by ste mali použiť funkciu simplexml_load_file Teraz máme v premennej:

$str = " 25 1000

, ktorý tvorí rovnaký objekt

$xml = simplexml_load_file(cesta k súboru alebo URL);

Pracovné metódy

V príkladoch nižšie je náš XML uložený v súbore alebo URL.

$str = " 25 1000

Nech je daný nasledujúci XML:

Zoberme si meno zamestnanca, vek a plat:

$xml = simplexml_load_file(cesta k súboru alebo URL); echo $xml->meno; //zobrazí "Kolya" echo $xml->vek; //vypíše 25 echo $xml->plat; //vypíše 1000

Ako vidíte, objekt $xml má vlastnosti zodpovedajúce značkám. Možno ste si všimli, že tag sa nikde v odvolaní nevyskytuje.

$str = " 25 1000

Zoberme si meno zamestnanca, vek a plat:

Je to preto, že ide o koreňovú značku. Môžete ho premenovať napr

- a nič sa nezmení:

$str = " 25 1000

V XML môže byť len jedna koreňová značka, rovnako ako

v obyčajnom HTML.

Upravme trochu náš XML:

V tomto prípade dostaneme reťazec žiadostí:

$xml = simplexml_load_file(cesta k súboru alebo URL); echo $xml->worker->name; //zobrazí "Kolya" echo $xml->worker->age; //vypíše 25 echo $xml->pracovník->plat; //vypíše 1000

Práca s atribútmi

Nech sú niektoré údaje uložené v atribútoch:

číslo 1

$str = " $xml = simplexml_load_file(cesta k súboru alebo URL); echo $xml->pracovník["meno"]; //zobrazí "Kolya" echo $xml->worker["vek"]; //vypíše 25 echo $xml->pracovník["plat"]; //vypíše 1000 echo $xml->worker; //zobrazí "číslo 1"

Značky so spojovníkmi

XML umožňuje značky (a atribúty) so spojovníkom. V tomto prípade sa prístup k takýmto značkám uskutoční takto:

Ivanov

$str = " 25 1000 $xml = simplexml_load_file(cesta k súboru alebo URL); echo $xml->worker->(first-name); //zobrazí "Kolya" echo $xml->worker->(priezvisko); //zobrazí "Ivanov" 26 2000 Slučovanie 27 3000

$xml = simplexml_load_file(cesta k súboru alebo URL); foreach ($xml ako $worker) ( echo $worker->name; //zobrazí sa "Kolya", "Vasya", "Petya" )

Z objektu do normálneho poľa

Ak vám práca s objektom nevyhovuje, môžete ho previesť na normálne pole PHP pomocou nasledujúceho triku:

$xml = simplexml_load_file(cesta k súboru alebo URL); var_dump(json_decode(json_encode($xml), true));

Viac informácií

Analýza na základe sitemap.xml

Stránka má často súbor sitemap.xml.

Tento súbor ukladá odkazy na všetky stránky lokality na uľahčenie indexovania vyhľadávacími nástrojmi (indexovanie je v podstate analýza lokality spoločnosťami Yandex a Google).

Vo všeobecnosti by sme sa nemali veľmi starať o to, prečo je tento súbor potrebný, hlavnou vecou je, že ak existuje, nemusíte prehľadávať stránky webu pomocou žiadnych zložitých metód, ale jednoducho použite tento súbor.

Ako skontrolovať prítomnosť tohto súboru: dovoľte nám analyzovať stránku site.ru, potom prejdite v prehliadači na stránku site.ru/sitemap.xml – ak niečo vidíte, je to tam, a ak to nevidíte, potom bohužiaľ.

Ak existuje mapa stránok, potom obsahuje odkazy na všetky stránky webu vo formáte XML. Pokojne vezmite tento XML, analyzujte ho, oddeľte odkazy na stránky, ktoré potrebujete akýmkoľvek spôsobom, ktorý vám vyhovuje (napríklad analýzou adresy URL, ktorá bola opísaná v metóde pavúka).

V dôsledku toho získate zoznam odkazov na analýzu, všetko, čo musíte urobiť, je prejsť na ne a analyzovať potrebný obsah.

Prečítajte si viac o zariadení sitemap.xml na Wikipédii.

Čo by ste mali urobiť ďalej:

Začnite riešiť problémy pomocou nasledujúceho odkazu: problémy pre lekciu.

© 2024 ermake.ru -- O oprave PC - Informačný portál