Kaip atidaryti XML dokumentą – darbo su XML failais ypatybės. Darbas su XML .NET programose Kas yra XML

Pradžia / Windows 7

Tikriausiai esate girdėję apie XML ir žinote daug priežasčių, kodėl jis turėtų būti naudojamas jūsų organizacijoje. Bet kas tiksliai yra XML? Šiame straipsnyje paaiškinama, kas yra XML ir kaip jis veikia.

Šiame straipsnyje

Žymėjimai, žymėjimai ir žymos

Norint suprasti XML, naudinga prisiminti, kaip galite žymėti duomenis. Dokumentus žmonės kūrė daugelį šimtmečių ir per tą laiką žmonės ant jų darė pastabas. Pavyzdžiui, mokytojai dažnai daro pastabas apie mokinių darbus, nurodydami, kad reikia perkelti pastraipas, padaryti sakinį aiškesnį ar pataisyti. rašybos klaidų tt Pažymėdami dokumentą galite nustatyti jo struktūrą, reikšmę ir išvaizda informacija. Jei kada nors naudojote karštąsias pataisas Microsoft Office Word, tada esate susipažinę su kompiuterine žymėjimo forma.

pasaulyje informacinės technologijos terminas „žymėjimas“ tapo terminu „ženklinimas“. Žymėjimas naudoja kodus, vadinamus žymomis (arba kartais žetonais), kad apibrėžtų duomenų struktūrą, vaizdinę išvaizdą ir (XML atveju) reikšmę.

Šio straipsnio tekstas yra HTML formatu yra geras pavyzdys kompiuterinio žymėjimo taikymas. Jei „Microsoft“. Internet Explorer spustelėkite šį puslapį dešiniuoju pelės mygtuku spustelėkite pelę ir pasirinkite komandą Peržiūrėkite HTML kodą, pamatysite skaitomą tekstą ir HTML žymas, pvz

IR

. HTML ir XML dokumentuose žymas lengva atpažinti, nes jos yra kampiniuose skliaustuose. Šio straipsnio šaltinio tekste HTML žymos atlieka daugybę funkcijų, pavyzdžiui, nustato kiekvienos pastraipos pradžią ir pabaigą (

...

) ir brėžinių vietą.

XML ypatybės

HTML ir XML dokumentuose yra duomenų, įtrauktų į žymas, tačiau tuo ir baigiasi abiejų kalbų panašumai. Formatas HTML žymos nustatyti duomenų dizainą – antraščių vietą, pastraipos pradžią ir tt XML formate žymės nustato duomenų struktūrą ir reikšmę – kas tai yra.

Apibūdinus duomenų struktūrą ir reikšmę, atsiranda galimybė juos pakartotinai panaudoti keliais būdais. Pavyzdžiui, jei turite pardavimo duomenų bloką, kuriame kiekvienas elementas yra aiškiai apibrėžtas, į pardavimo ataskaitą galite įkelti tik būtinus elementus, o kitus duomenis perkelti į apskaitos duomenų bazę. Kitaip tariant, galite naudoti vieną sistemą duomenims generuoti ir pažymėti XML formatu, o tada apdoroti tuos duomenis bet kurioje kitoje sistemoje, neatsižvelgiant į kliento platformą arba operacinė sistema. Dėl šio suderinamumo XML yra vienos iš populiariausių duomenų mainų technologijų pagrindas.

Dirbdami atkreipkite dėmesį į šiuos dalykus:

    HTML negalima naudoti vietoj XML. Tačiau XML duomenys gali būti įtraukti į HTML žymas ir rodomi tinklalapiuose.

    HTML galimybės apsiriboja iš anksto nustatytu žymų rinkiniu, kuris yra bendras visiems vartotojams.

    XML taisyklės leidžia sukurti bet kokias žymas, reikalingas duomenims ir jų struktūrai apibūdinti. Tarkime, jums reikia saugoti ir dalytis informacija apie augintinius. Norėdami tai padaryti, galite sukurti šį XML kodą:

    Izzy Siamo 6 taip ne Izz138bod Colinas Wilcoxas

Kaip matote, XML žymos aiškiai parodo, kokius duomenis žiūrite. Pavyzdžiui, aišku, kad duomenys yra apie katę, ir jūs galite lengvai nustatyti jos vardą, amžių ir pan. Kadangi galite kurti žymes, kurios apibrėžia beveik bet kokią duomenų struktūrą, XML yra išplečiamas.

Tačiau nepainiokite šio pavyzdžio žymų su HTML failo žymomis. Pavyzdžiui, jei aukščiau pateiktas XML tekstas įklijuojamas į HTML failą ir atidaromas naršyklėje, rezultatai atrodys taip:

Izzy Siamo 6 taip ne Izz138bod Colin Wilcox

Žiniatinklio naršyklė nepaisys XML žymų ir parodys tik duomenis.

Gerai suformuoti duomenys

Tikriausiai girdėjote ką nors iš IT specialistų kalbant apie „gerai suformuotą“ XML failą. Gerai suformuotas XML failas turi atitikti labai griežtas taisykles. Jei jis nesilaiko šių taisyklių, XML neveiks. Pavyzdžiui, ankstesniame pavyzdyje kiekviena atidarymo žyma turi atitinkamą uždarymo žymą, todėl šiame pavyzdyje laikomasi vienos iš gerai suformuoto XML failo taisyklių. Jei pašalinsite žymą iš failo ir bandysite ją atidaryti vienoje iš „Office“ programų, pasirodys klaidos pranešimas ir tokio failo naudoti bus neįmanoma.

Nebūtina žinoti gerai suformuoto XML failo kūrimo taisyklių (nors jas nesunku suprasti), tačiau atminkite, kad tik gerai suformuotus XML duomenis galima naudoti kitose programose ir sistemose. Jei XML failas neatsidaro, greičiausiai jis netinkamai suformuotas.

XML nepriklauso nuo platformos, o tai reiškia, kad bet kuri programa, sukurta naudoti XML, gali skaityti ir apdoroti XML duomenis, nepaisant aparatinės įrangos ar operacinės sistemos. Pavyzdžiui, jei taikote tinkamas XML žymas, galite naudoti darbalaukio programą, kad atidarytumėte ir apdorotumėte duomenis, gautus iš pagrindinio kompiuterio. Ir nepaisant to, kas sukūrė XML duomenis, duomenimis galima manipuliuoti įvairiose „Office“ programose. Dėl savo suderinamumo XML tapo viena populiariausių duomenų mainų tarp duomenų bazių ir vartotojų kompiuterių technologijų.

Be gerai suformuotų žymėtų duomenų, XML sistemose paprastai naudojami du papildomi komponentai: schemos ir transformacijos. Tolesniuose skyriuose aprašoma, kaip jie veikia.

Schemos

Neišsigąskite termino „schema“. Schema yra tiesiog XML failas, kuriame yra XML duomenų failo turinio taisyklės. Schemos failai paprastai turi XSD plėtinį, o XML duomenų failai naudoja XML plėtinį.

Schemos leidžia programoms patvirtinti duomenis. Jie formuoja duomenų struktūrą ir užtikrina jų suprantamumą kūrėjui ir kitiems žmonėms. Pavyzdžiui, jei vartotojas į datos lauką įveda neteisingus duomenis, pvz., tekstą, programa gali paraginti vartotoją juos ištaisyti. Jei duomenys XML faile atitinka schemos taisykles, galite naudoti bet kurią XML įgalintą programą, kad galėtumėte juos skaityti, interpretuoti ir apdoroti. Pavyzdžiui, kaip parodyta paveikslėlyje žemiau, „Excel“ gali patvirtinti duomenis kad būtų laikomasi CAT schemos.

Grandinės gali būti sudėtingos, todėl šiame straipsnyje negalima paaiškinti, kaip jas sukurti. (Be to, tikėtina, kad jūsų organizacijoje yra IT žmonių, kurie žino, kaip tai padaryti.) Tačiau naudinga žinoti, kaip atrodo diagramos. Toliau pateiktoje diagramoje apibrėžiamos žymų rinkinio taisyklės ... :

Nesijaudinkite, jei pavyzdys nėra aiškus. Tiesiog atkreipkite dėmesį į šiuos dalykus:

    Eilučių elementai pavyzdinėje schemoje vadinami deklaracijomis. Jei reikia papildomos informacijos apie gyvūną, pavyzdžiui, jo spalvą ar specialias charakteristikas, IT skyrius diagramoje pridėtų atitinkamas deklaracijas. XML sistema gali būti modifikuojama, kai vystosi verslo poreikiai.

    Deklaracijos yra galinga priemonė manipuliuoti duomenų struktūra. Pavyzdžiui, skelbimas reiškia, kad tokios žymos kaip Ir , turi sekti aukščiau nurodyta tvarka. Skelbimai taip pat gali patvirtinti naudotojo įvesties tipus. Pavyzdžiui, aukščiau nurodyta grandinė reikalauja teigiamo sveikojo skaičiaus įvesties katės amžiui ir Būlio reikšmės (TRUE arba FALSE) žymoms ALTERED ir DECLAWED.

    Jei XML failo duomenys atitinka schemos taisykles, vadinasi, duomenys yra galiojantys. Patikrinimo, ar XML duomenų failas atitinka schemos taisykles, procesas vadinamas (pakankamai logiškai) patvirtinimu. Didelis schemų naudojimo pranašumas yra tas, kad jos gali užkirsti kelią duomenų sugadinimui. Schemos taip pat palengvina sugadintų duomenų paiešką, nes XML failų apdorojimas sustabdomas iškilus problemai.

Transformacijos

Kaip aptarta aukščiau, XML taip pat leidžia efektyviai naudoti ir pakartotinai naudoti duomenis. Duomenų pakartotinio panaudojimo mechanizmas vadinamas XSLT transformacija (arba tiesiog transformacija).

Jūs (arba jūsų IT skyrius) taip pat galite naudoti transformacijas, kad keistumėte duomenis tarp galinių sistemų, pvz., duomenų bazių. Tarkime, kad duomenų bazė A saugo pardavimo duomenis lentelėje, kuri yra naudinga pardavimo skyriui. Duomenų bazėje B saugomi pajamų ir išlaidų duomenys specialiai apskaitai skirtoje lentelėje. Duomenų bazė B gali naudoti transformaciją, kad paimtų duomenis iš duomenų bazės A ir įtrauktų juos į atitinkamas lenteles.

Duomenų failo, schemos ir transformacijos derinys sudaro pagrindinę XML sistemą. Toliau pateiktame paveikslėlyje parodytas tokių sistemų veikimas. Duomenų failas patikrinamas pagal schemos taisykles ir perduodamas bet kokiu tinkamu būdu transformuoti. Šiuo atveju transformacija pateikia duomenis tinklalapio lentelėje.

Toliau pateiktame pavyzdyje parodyta transformacija, kuri įkelia duomenis į lentelę tinklalapyje. Pavyzdžio esmė yra ne paaiškinti, kaip sukurti transformacijas, o parodyti vieną iš jų galimų formų.

Vardas Veislė Amžius Pakeistas Declawed Licencija Savininkas

Šiame pavyzdyje parodyta, kaip gali atrodyti vieno tipo transformacijos tekstas, tačiau atminkite, kad galite apsiriboti aiškiu duomenų aprašymu, ko jums reikia, ir tą aprašymą galima padaryti jūsų gimtąja kalba. Pavyzdžiui, galite nueiti į IT skyrių ir pasakyti, kad reikia spausdinti paskutinių dvejų metų konkrečių regionų pardavimų duomenis, o informacija turi atrodyti taip ir taip. Tada skyrius gali parašyti (arba pakeisti) transformaciją, kad įvykdytų jūsų prašymą.

„Microsoft“ ir vis daugiau kitų įmonių kuria transformacijas įvairiems tikslams, todėl XML naudojimas tampa dar patogesnis. Ateityje greičiausiai bus galima atsisiųsti jūsų poreikius atitinkančią konversiją su nedideliu tinkinimu arba be jo. Tai reiškia, kad laikui bėgant XML naudojimas taps vis pigesnis.

XML Microsoft Office sistemoje

Profesionalūs Office leidimai teikia patobulintą XML palaikymą. Pradedant nuo 2007 m. „Microsoft Office System“, „Microsoft Office“ naudoja XML pagrįstus failų formatus, tokius kaip DOCX, XLSX ir PPTX. Kadangi XML duomenys saugomi teksto formatu, o ne patentuotu dvejetainiu formatu, klientai gali apibrėžti savo schemas ir naudoti jūsų duomenis įvairiais būdais nemokėdami honorarų. Norėdami gauti daugiau informacijos apie naujus formatus, žr. Atidaryti XML formatus ir failo pavadinimo plėtinius. Žemiau pateikiami kiti privalumai.

Visa tai puiku, bet ką daryti, jei turite XML duomenų be schemos? Tai priklauso nuo ko Biuro programa tu naudoji. Pavyzdžiui, kai atidarote XML failą be schemos programoje „Excel“, daroma prielaida, kad schema egzistuoja, ir leidžia įkelti duomenis į XML lentelę. Duomenims rūšiuoti, filtruoti ir apskaičiuoti galite naudoti XML sąrašus ir lenteles.

Įgalinkite XML funkcijas „Office“.

Pagal numatytuosius nustatymus skirtukas Kūrėjas nėra matomas. Jis turi būti įtrauktas į juostelę, kad galėtumėte naudoti XML komandas „Office“.

Ankstesniame straipsnyje buvo aprašytos bendros XML sąvokos. Šiame straipsnyje sužinosime, kaip atlikti pagrindinius veiksmus, susijusius su keitimu, pridėjimu, paieška XML faile.

XML failas, naudojamas pavyzdyje.

Mazda 2007 BMW 2009

xml dom

IN šiuo metu, mūsų faile yra tokia struktūra:

Ryšys tarp mazgų in XML DOM, pagrindiniai punktai:

1. Bet kuris DOM medžio mazgas turi pirminį ParentNode. Mūsų pavyzdyje garažas yra abiejų automobilio elementų pirminis elementas, o abu automobilio elementai savo ruožtu yra modelio ir metų elementų tėvai.

Kaip gauti automobilio xml elemento pirminį elementą?

Console.WriteLine(elmRoot["automobilis"].ParentNode.Name); //Rezultatas: garažas

2. Tėvas gali turėti vaikų ChildNodes. Pavyzdžiui, garažo mazgui vaikai yra abu automobilio elementai. Automobilio elementai taip pat turi vaikų modelį ir metus.

Vaikų mazgai, yra rinkinys, kuriame saugomi visi antriniai xml elementai, norint pasiekti norimą elementą, reikia nurodyti jo indeksą. (Indeksas visada prasideda nuo nulio!)

Pavyzdžiui: kaip gauti pirmąjį vaiko elementą?

ElmRoot.ChildNodes;

3. Kaip ir įprastame gyvenime, vaikas gali gimti pirmas Pirmas vaikas arba paskutinis Paskutinis vaikas.

Jei kaip pavyzdį paimsime automobilio elementą, tada

FirstChild yra modelis LastChild yra metai

4. Savo ruožtu taip pat yra sąsajų tarp vaikų elementų, jie gali būti broliai ar seserys, jei brėžiame paraleles su tikru gyvenimu.

Vaikas gali turėti, pavyzdžiui, ankstesnį brolį ir seserį

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Rezultatas: metai Console.WriteLine(elmRoot.ChildNodes.LastChild.PreviousSibling.Name); //Rezultatas: modelis

Jei elementas nerastas, tada metama išimtis: NullReferenceException, todėl dirbdami su xml visada naudokite try catch blokus.

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

LastChild yra NextSibling;
Pirmasis vaikas yra ankstesnis brolis ir sesuo;

Naudodami aukščiau aprašytus metodus, galite lengvai pereiti prie norimo mazgo ir gauti bet kokią jums reikalingą vertę.

Kaip gauti xml elemento vertę?

Elemento xml reikšmę galima gauti naudojant savybę InnerText, pavyzdžiui:

Console.WriteLine(elmRoot["automobilis"].FirstChild.InnerText); //Rezultatas: Mazda

Kitas būdas gauti tą pačią xml elemento reikšmę:

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Rezultatas: Mazda

Judesių seka išilgai DOM medžio:

Garažas -> automobilis -> modelis -> Mazda

Mes gauname metus:

ElmRoot["automobilis"].LastChild.InnerText; //Rezultatas: 2007 m

Pasekmė:

Garažas -> automobilis -> metai -> 2007 m

Kitas pavyzdys: 3 būdai gauti tą patį rezultatą.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["automobilis"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Rezultatas: BMW

Jei reikia gauti metus elementui, kurio vertė yra Mazda:

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Rezultatas: 2007 m

BMW (dviem būdais gaukite tą patį rezultatą)

Console.WriteLine(elmRoot.ChildNodes.Item(1).ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Rezultatas: 2009 m

Kaip pakeisti xml elementų reikšmes?

Turto naudojimas Vidinis tekstas () Galite gauti ir pakeisti xml elemento reikšmę, pavyzdžiui, pakeisti metus.

//Nustatyti naują reikšmę elmRoot.FirstChild.LastChild.InnerText = "2010"; //Parodykite naują reikšmę konsolės ekrane Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Rezultatas: 2010 m

Tuo pačiu metu turite atsiminti, kad visi pakeitimai įvyksta naudojant virtualų xml failą, jei atidarysite fizinį failą, pamatysite, kad 2007 m.

Kad pakeitimai įsigaliotų, turite naudoti išsaugojimo metodą, pvz.:

ElmRoot.Save("xml failo pavadinimas arba srautas");

Dabar informacija bus pakeista „fiziniame“ xml faile.

Kaip gauti vaikų elementų skaičių?

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

garažas -> automobilyje yra 2 vaikai: modelis ir metai

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

garažas -> automobilis -> modelyje yra 1 vaikas xml elementas.

Prieiga prie vaikų elementų

pagal indeksą

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Rezultatas: automobilis

Naudojant kilpą

Foreach (XmlNode nod in elmRoot.ChildNodes) ( Console.WriteLine(nod.Name); ) //Rezultatas: automobilis, automobilis

Kaip gauti xml elemento pavadinimą?

elmRoot.Vardas; //Rezultatas: garažas

Naujo XML elemento kūrimas

Sukurkime naują elementą savo XML dokumente, kad jis skirtųsi nuo kitų dviejų (automobilio), pavadinkime jį autobusu.

Kurdami naują elementą naudosime rekomendaciją iš msdn svetainės ir vietoj standartinio naujo XmlElement naudosime CreateElement metodą.

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

Naujo xml elemento kūrimas ir įtraukimas

Sukurkime naują xml elementą pavadinimu „BUS“.

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //automobilis, automobilis XmlElement elmNew = xmlDoc.CreateElement("autobusas"); guobaŠaknis.AppendChild(guobaNaujas); Console.WriteLine(elmRoot.ChildNodes.Count); //3 automobilis, automobilis, autobusas xmlDoc.Save("xml failo pavadinimas");

Paaiškinimas:

1. Pirmiausia gauname šakninį elementą, prie kurio pritvirtinsime naujus elementus.

2. Patikrinimui parodysime esamą garažo elemento vaikų elementų skaičių: 2 (automobilis ir automobilis)

3. Sukurkite naują BUS elementą

4. Metodo naudojimas AppendChild pridedant prie medžio naują elementą

5. Dar kartą panaudokime čekį ir parodykime esamą garažo elemento elementų skaičių, dabar jų yra 3: automobilis, automobilis, autobusas.

6. Jei norite, kad pakeitimai paveiktų fizinį failą, išsaugokite

Pačiame XML faile naujasis elementas atrodys taip:

Kaip pridėti naują xml elementą?

Užduotis: sukurkite naują XML elementą ir pridėkite prie jo tekstinį turinį, pavyzdžiui, pagaminimo metus.

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

XML faile:

2006

Dėl aiškumo

Dabar sukurkime „autobuso“ mazgą, kurio architektūra tokia pati kaip automobilio, tai yra, pridėkite mazgų: modelį, metus ir šiek tiek teksto turinio.

XML elemento kūrimas su vaikais

string strFilename = @"C:\lessons\Auto.xml"; //sukurti naują xml dokumentas atmintyje XmlDocument xmlDoc = new XmlDocument(); //įkelti xml failą į atmintį xmlDoc.Load(strFilename); //Gauti šakninį elementą XmlElement elmRoot = xmlDoc.DocumentElement; //Sukurti 3 elementus: magistralė, modelis, metai XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("modelis"); XmlElement elmYear = xmlDoc.CreateElement("year"); //Nustatykite elementų reikšmes: modelis, metai XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); pridėti kitaip //Pridėkite du antrinius elementus prie magistralės elemento: modelis ir metai elmBUS.AppendChild(elmModel); elmBUS.AppendChild(guobosMetai); //Pridėkite vertes prie modelio ir metų mazgų elmModel.InnerText = "liaz"; elmYear.AppendChild(metai_txt); //Pridėkite naują xml elementų magistralę prie medžio elmRoot.AppendChild(elmBUS); //Patikrinkite, ar viskas pridėta taip, kaip turėtų Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Jei viskas tvarkoje, tada naudokite Išsaugoti metodą xmlDoc.Save("xml failo pavadinimas");

Rezultatas:

liaz 2006

Kaip galiu sutrumpinti šį kodą? Pavyzdžiui, taip:

String PathXmlFile = @"C:\lesssons\Auto.xml"; XmlDocument xmlDoc = naujas XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("modelis"); XmlElement elmYear = xmlDoc.CreateElement("year"); //Pridėkite vertes prie modelio ir metų mazgų elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(guobosMetai); guobosŠaknis.AppendChild(elmBUS); //Jei viskas teisinga, tada iškvieskite Įrašymo metodą xmlDoc.Save("xml failo pavadinimas");

Sutrumpinkime kodą dar šiek tiek, tam naudosime ypatybę InnerXml:

XmlDocument xmlDoc = naujas XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); string txt = " liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (bus lygus garage) – tai dar vienas būdas pasiekti šakninį elementą, toks pat kaip XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild ( elmXML) xmlDoc.Save(PathXmlFile);

Rezultatas

Gaukite elementų sąrašą naudodami GetElementByTagName

„GetElementByTagName“ grąžina XmlNodeList, kuriame yra visi nurodytam elementui priklausantys palikuonys elementai, pavyzdžiui, turime gauti visus automobilių modelius, kurie yra saugomi garaže:

XmlDocument xmlDoc = naujas XmlDocument(); xmlDoc.Load(strFailo pavadinimas); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modelis"); foreach (XmlNode mazgas modelyjeName) ( Console.WriteLine(node.InnerText); ) //Rezultatas: mazda, bmw, liaz

Prieiga naudojant indeksą:

String PathXmlFile = @"C:\lesssons\Auto.xml"; XmlDocument xmlDoc = naujas XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modelis"); Console.WriteLine(modelName.InnerText); //Rezultatas: liaz

Kaip galiu pakeisti naujai sukurto „bus“ elemento tekstinį turinį naudojant GetElementByTagName metodą?

String PathXmlFile = @"C:\lesssons\Auto.xml"; XmlDocument xmlDoc = naujas XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modelis"); Console.WriteLine(modelName.InnerText); //Gavo reikšmę: liaz

Arba galite pakeisti pavadinimą liaz į Ikarus

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

Išplečiamoji žymėjimo kalba (XML). Tai tikrai paprasta tekstinius failus, kurios naudoja pasirinktines žymas dokumento struktūrai ir kitoms funkcijoms apibūdinti.

Kas yra XML

XML yra žymėjimo kalba, sukurta World Wide Web Consortium (W3C), skirta apibrėžti sintaksę, skirtą koduoti dokumentus, kuriuos gali skaityti žmonės ir mašinos. Tai daroma naudojant žymes, kurios apibrėžia dokumento struktūrą, taip pat kaip dokumentas turi būti saugomas ir gabenamas.

Lengviausias būdas palyginti ją su kita žymėjimo kalba, kurią galbūt pažįstate hiperteksto žymėjimas(HTML), naudojamas tinklalapiams koduoti. HTML naudojamas iš anksto nustatytas žymėjimo simbolių rinkinys (trumpieji kodai), apibūdinantys tinklalapio turinio formatą.

Tačiau skirtumas nuo XML yra tas, kad jį galima išplėsti. XML neturi iš anksto nustatytos žymėjimo kalbos, tokios kaip HTML. Vietoj to, XML leidžia vartotojams sukurti savo žymėjimo simbolius, kad apibūdintų turinį, sukuriant neribotą ir savaime apibrėžiantį simbolių rinkinį.

Iš esmės HTML yra kalba, kurioje pagrindinis dėmesys skiriamas turinio pateikimui, o XML yra skirta duomenų aprašymo kalba, naudojama duomenims saugoti.

XML dažnai naudojamas kaip kitų dokumentų formatų, kurių yra šimtai, pagrindas. Štai keletas, kuriuos galbūt norėsite žinoti:

  • RSS ir ATOM aprašo, kaip programos turėtų tvarkyti žiniatinklio informacijos santraukas.
  • „Microsoft .NET“ savo konfigūracijos failams naudoja XML.
  • „Microsoft Office“ naudoja XML kaip dokumento struktūros pagrindą.

Taigi, jei turite XML failą, jis nebūtinai nurodo, kokiai programai jis skirtas. Tačiau jums nereikia dėl to jaudintis, nebent kuriate XML failus.

Kaip atidaryti XML failą

Yra keletas būdų, kaip tiesiogiai atidaryti XML failą. Galite atidaryti ir redaguoti juos naudodami bet kurią teksto rengyklę, peržiūrėti naudodami bet kurią žiniatinklio naršyklę arba naudoti svetainę, kurioje galite peržiūrėti, redaguoti ir net konvertuoti į kitus formatus.

Reguliariai dirbdami su XML naudokite teksto rengyklę

Kadangi XML failai yra tiesiog tekstiniai failai, juos galima atidaryti bet kuriame teksto rengyklėje. Tačiau daugelis teksto redaktorių, pvz., Notepad, tiesiog nėra sukurti taip, kad būtų rodomi teisingos struktūros XML failai. Tai gali būti naudinga norint greitai susipažinti su XML failo turiniu. Tačiau darbui su jais yra patogesnių įrankių.


Žiniatinklio naršyklės naudojimas norint peržiūrėti XML failą

Jei jums nereikia redaguoti XML failo, o tik norite peržiūrėti turinį, jūsų naršyklė gali atlikti šią užduotį. Be to, jūsų žiniatinklio naršyklė greičiausiai jau sukonfigūruota kaip standartinė priemonė peržiūrėti XML failus. Taigi dukart spustelėjus XML failą jis turėtų būti atidarytas naršyklėje.

Jei ne, galite dešiniuoju pelės mygtuku spustelėti failą ir rasti parinkčių, kaip jį atidaryti su bet kuria kita programa. Tiesiog pasirinkite savo interneto naršyklę iš programų sąrašo.

Kai failas atidaromas, turėtumėte matyti geros struktūros duomenis. Tai nėra tokia graži, kaip spalvota, kurią gaunate naudodami Notepad++, bet daug geriau nei užrašų knygelė.

Internetinės XML failų rengyklės naudojimas

Jei norite redaguoti atsitiktinį XML failą ir nenorite atsisiųsti naujo teksto rengyklės arba jums reikia konvertuoti xml failą į kitą formatą Yra keletas nemokamų internetinių XML redaktorių.

TutorialsPoint.com, XMLGrid.net ir CodeBeautify.org – leidžia peržiūrėti ir redaguoti XML failus. Baigę redaguoti, galite atsisiųsti pakeistą XML failą arba net konvertuoti jį į kitą formatą.

Pavyzdžiui, naudojame CodeBeautify.org. Puslapis padalintas į tris skyrius. Kairėje yra XML failas, su kuriuo dirbate. Viduryje rasite keletą funkcijų. Dešinėje matysite kai kurių parinkčių, iš kurių galite pasirinkti, rezultatus.

Pavyzdžiui, toliau pateiktame paveikslėlyje visas mūsų XML failas yra kairėje, o rezultatų srityje rodomas medžio vaizdas, nes spustelėjome medžio rodinio mygtuką viduryje.

Naudokite mygtuką Naršyti, kad įkeltumėte XML failą iš savo kompiuterio arba mygtuką Įkelti URL, kad gautumėte XML iš internetinio šaltinio

Mygtukas „Medžio vaizdas“ rodo duomenis gerai suformatuotoje medžio struktūroje rezultatų srityje, visos žymos paryškintos oranžine spalva, o atributai – žymų dešinėje.

„Beatify“ pateikia jūsų duomenis tvarkingu, lengvai skaitomu formatu.

Mygtukas Sumažinti rodo jūsų duomenis naudojant kuo mažiau tarpų. Ši funkcija kiekvieną duomenų dalį patalpins vienoje eilutėje. Tai bus naudinga bandant sumažinti failą ir sutaupyti vietos.

Galiausiai galite naudoti mygtuką XML į JSON XML transformacijosį JSON formatą ir mygtuką Eksportuoti į CSV, kad išsaugotumėte duomenis kaip kableliais atskirtų reikšmių failą, arba mygtuką Atsisiųsti, kad atsisiųstumėte bet kokius naujo XML failo pakeitimus.

Gana daug laiko praėjo nuo tada, kai žadėjau kalbėti apie darbą su duomenimis XML formatu kuriant .NET programas. Pažadus reikia tesėti. Atkreipkite dėmesį, kad šis straipsnis skirtas ne profesionaliems .NET kūrėjams, o tiems, kurie dar neturi didelės patirties kuriant .NET programas.


Kodėl turėtume dirbti su XML?

Jei dar neturite labai gero supratimo, kas yra XML, rekomenduoju perskaityti straipsnį „XML rimta ir ilgam“ 2007 m. „KV“ Nr. Siekiant sutaupyti vietos svarbesniems dalykams, pats XML formatas čia nebus analizuojamas.

Prieš pradėdami susipažinti su programos kodu, turite atsakyti į vieną esminį klausimą: kodėl į savo programą įtraukti XML palaikymą? Manau, kad daugelis žmonių uždavė sau šį klausimą dėl daugelio technologijų, ir ne visos jos buvo įtrauktos į programas po atsakymo. Tačiau su XML situacija yra šiek tiek kitokia, ir yra realių priežasčių naudoti šį formatą daugelyje situacijų.

Pagrindinis XML privalumas yra tas, kad, būdamas teksto formatas, jis puikiai leidžia saugoti ir perduoti bet kokius duomenis. Kadangi šis formatas yra tekstas, jo kelių platformų problema išsprendžiama savaime, o XML duomenų perdavimo problema taip pat lengvai išsprendžiama (kaip, pavyzdžiui, daroma SOAP). Be to, galite lengvai pakeisti duomenų perdavimo ar saugojimo formatą pridėdami naujų atributų ir per daug nesijaudindami dėl suderinamumo su ankstesnėmis formato versijomis, nes seną versiją naudojančios programos galės skaityti tai, ko joms reikia, nekreipdamos dėmesio į naujus. žymas ar atributus. Daugelis programų naudoja XML pagrindu failų formatai, daugelis duomenų perdavimo protokolų taip pat yra pagrįsti XML, o abiejų sąrašai toliau auga.

Žinoma, kita vertus, XML nėra labai ekonomiškas, nes, kaip kažkada teisingai pastebėjo vienas iš „Computer News“ forumo lankytojų, XML dokumentai dažnai susideda iš 10% duomenų ir 90% žymų. Tačiau tai labai priklauso nuo pasirinktų žymų. Galite rašyti Šv. Melnikaite, 2, ar tai įmanoma . Nors, tiesą pasakius, man atrodo, kad su dabartiniais standžiaisiais diskais ir storais kanalais nėra prasmės ypatingai suspausti.

Taigi tinkamose rankose XML yra galingas ir patogus dalykas, o dėl šio formato paplitimo jo niekaip nepabėgsi. Taigi pereikime prie rašymo programos kodas.

Programavimui naudosime pagrindinę .NET platformos kalbą – C#. Kad kuo daugiau skaitytojų galėtų patys pasipraktikuoti su duotu programos kodu, naudosiu pirmąją C# versiją ir .NET Framework.


Duomenų įrašymas

Pirma, pakalbėkime apie duomenų rašymą, nes, žinote, norėdami ką nors iš kažkur perskaityti, pirmiausia turite ką nors kažkur parašyti. Kadangi jūs ir aš pradėjome programuoti, mums nedera kurti XML duomenų rankiniu būdu. Taigi pirmiausia pradėkime nuo duomenų rašymo į XML.

Pirmiausia sukurkite naują projektą Visual Studio, #Develop arba C# Builder ir įtraukite System.Xml į importuotų vardų sąrašą.

Speciali klasė, XmlTextWriter, yra atsakinga už XML duomenų įrašymą .NET Framework, kuri leidžia įrašyti XML duomenis į savavališką srautą. Tai yra, mes, paprastai kalbant, galime juos naudoti norėdami įrašyti į failą, duomenų bazę , ir kažkam išsiųsti per internetą, bet dabar viską surašysime į failą. Išvestį galite peradresuoti pakeisdami objekto konstruktorių (t.y. inicijavimo metu perduodami ne failo pavadinimą ir jo kodavimą, o objektą, kuris yra duomenys). srautas).

String FileName = "c:\\demo.xml"; XmlTextWriter xml = naujas XmlTextWriter(Failo pavadinimas, Sistema.Tekstas.Kodavimas.Unikodas); xml.Formatting = Formatting.Indented; xml.WriteStartDocument(); xml.WriteStartElement("rootelement"); už (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();

Pirmoji eilutė, manau, yra gana aiški - tai tiesiog įrašomas failo, kuriame išsaugosime duomenis, pavadinimas. Toliau sukuriame XmlTextWriter tipo objektą (jis vadinamas, kaip matote, xml), ir su juo atliksime visas tolesnes operacijas. Atkreipkite dėmesį, kad kurdami objektą taip pat nurodome kodavimą, kuriuo bus rašomas XML: mūsų pavyzdyje tai yra Unicode. Kita eilutė, paprastai tariant, nereikalinga, tačiau ji padarys mūsų XML dokumentą, kaip sakoma, skaitomą žmogui, tai yra, pridės reikiamas įtraukas ir suskaidys į eilutes. Be šito visas dokumentas būtų parašytas vienoje eilutėje, o tai nors ir taupo vietą, tačiau rankiniam redagavimui praktiškai netinkamas.

Dokumento rašymas pradedamas iškviečiant mūsų xml objekto WriteStartDocument() metodą. Po jos esanti eilutė mūsų XML dokumente prideda šakninį elementą „rootelement“ (priminsiu, kad XML dokumentuose šakninis elementas turi būti vienoje kopijoje). Tada į ciklą į mūsų XML dokumentą pridedame dar dešimt elementų, kurie neturi jokios semantinės apkrovos, kiekvienam iš kurių nustatome po du atributus ir dar dešimt subelementų. Atkreipkite dėmesį, kad galime pridėti skaičių prie eilutės aiškiai nekonvertuodami duomenų, tačiau jei skaičius turi sudaryti tik eilutę, jis turi būti tiesiogiai konvertuojamas naudojant ToString() metodą. Taip pat atkreipkite dėmesį, kad turime aiškiai uždaryti kiekvieną XML dokumento elementą, o tada ir visą dokumentą.

Dabar, kai mūsų XML dokumentas buvo sėkmingai parašytas, pažiūrėkime, kaip galime nuskaityti iš jo duomenis.


Duomenų skaitymas

Į savo programos formą pridėkite komponentą listBox (jei, žinoma, tai nėra konsolinė programa), kad galėtumėte stebėti XML failo skaitymo rezultatą. Na, jei jūsų programa yra konsolės programa, galite lengvai nukreipti išvestį į konsolę.

Kaip įprasta, pirmiausia susipažinkime su programos kodu, o tada žiūrėsime, ką tiksliai šis kodas veikia.

XmlTextReader xml = naujas XmlTextReader(failo pavadinimas); xml.WhitespaceHandling = WhitespaceHandling.Nėra; int i = 0; while (xml.Read())( if ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "subelement")) ( listBox1.Items.Add("subelementas " + i + "rastas") i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); )( listBox1.Items.Add(" " + xml.GetAttribute("attr")); ) ) ) xml.Close();

Skaitymui, kaip galbūt pastebėjote, naudojame kitą klasę, būtent XmlTextReader. Jis yra toje pačioje vardų erdvėje kaip klasė, kurią naudojome duomenims rašyti. Pirmoje eilutėje sukuriame XmlTextReader egzempliorių, pavadintą xml (čia darome prielaidą, kad kintamąjį FileName jau apibrėžėme anksčiau, jei norite praleisti tuščias eilutes, jei jos kažkaip nepaaiškinamai atsiranda ką tik sukurtame XML faile, mes naudojame toliau pateiktą informaciją). eilutę duotame kodo fragmente i kintamasis naudojamas skaičiuojant "poelemento" elementų skaičių XML faile, iš kurio nuskaitomi duomenys.

Kitas yra tiesioginio duomenų nuskaitymo iš failo ciklas. Read() metodas nuskaito kitą XML dokumento elementą, o jį perskaitę patikriname, ką tiksliai skaitome. Jei tai iš tikrųjų yra "subelemento" elementas, mes įtraukiame informaciją apie nuskaitytą elementą į listBox1, padidiname kintamąjį, kuriame yra nuskaitytų elementų skaičius, ir tada nuskaitome elemento atributus. Perskaitę atributus, suorganizuojame atskirą ciklą subelementų skaitymui (atkreipkite dėmesį, kad tam nereikia atskiro XmlTextReader) ir šių subelementų atributų, kaip ir anksčiau, visą nuskaitytą informaciją įvedame į listBox1, kad galėtume kontroliuoti jų teisingumą skaitymas.

Skaitydami XML failus, kaip ir rašydami, konstruodami XmlTextReader galite kaip parametrą nurodyti srautą, iš kurio skaityti, ir tada galėsite skaityti ne tik iš failų, bet ir iš kitų šaltinių, kurių pavyzdžių turiu. Reikėtų atkreipti dėmesį į vieną naudingą XmlTextReader klasės savybę: ji į atmintį neįkelia viso skaitomo XML dokumento, todėl patogu analizuoti didelius XML dokumentus (pavyzdžiui, XML duomenų bazes).


Užkulisiuose

Apskritai pavyzdys, kurį ką tik aptarėme, yra per paprastas tikriems projektams. Šiais laikais skaitant XML dokumentus jie dažniausiai tikrinami naudojant DTD, XML Schema arba Relax NG. Patvirtinimas yra tikrinimas, ar XML dokumento žymėjimas atitinka tam tikrą standartą, aprašytą straipsnyje išorinis failas. Patvirtinimas reikalingas tam, kad dokumento tikrinimas nebūtų įtrauktas į programos algoritmą, o galėtų būti savavališkai pakeistas pasikeitus duomenų formatui, neatnaujinant programos kodo, kuris skaito ar rašo duomenis. Deja, dabar mes neturėsime laiko sutvarkyti patvirtinimo, nes, kaip jūs patys suprantate, laikraščio straipsnio apimtis turi tam tikrų apribojimų.

Kitas įdomus ir naudingas praktinis dalykas dirbant su XML duomenimis yra XSL duomenų transformavimas. Ši transformacija taikoma duomenims, kai jie rodomi HTML puslapiuose, ir, tiesą sakant, tiesiog pritaikomas konkretus tinklalapio šablonas XML rinkmenai, kurioje yra tam tikrų duomenų. Kadangi liūto dalis šiuo metu naudojamų XML duomenų vienaip ar kitaip yra žiniatinklyje, būtų labai labai gerai pagalvoti apie XSL transformacijas.

Taigi, manau, šis straipsnis turės tęsinį – bet, žinoma, tik tuo atveju, jei jūs patys (tai yra „Computer News“ skaitytojai) apie tai paklausite forume arba laiške mano el. Kol kas turbūt viskas apie XML naudojimą .NET programose. Tikiuosi, kad ši informacija jums bus naudinga.

Dabar mes mokysime dirbti su XML.

XML yra duomenų mainų tarp svetainių formatas.

Kas yra API? Tai yra funkcijų rinkinys, su kuriuo galite siųsti užklausą į šią svetainę ir gauti norimą atsakymą.

Šis atsakymas dažniausiai pateikiamas XML formatu. Taigi pradėkime tai studijuoti.

Darbas su XML PHP

Tarkime, kad turite XML. Jis gali būti eilutėje arba saugomas faile arba pateikiamas paprašius konkrečiu URL. Tegul XML yra saugomas eilutėje. Tokiu atveju turite sukurti objektą iš šios eilutės naudodami:

naujas SimpleXMLElement $str = " 25 1000 Kolia

"; $xml = naujas SimpleXMLElement($str); Dabar turime kintamąjį$xml

saugomas objektas su išanalizuota XML. Pasiekę šio objekto savybes, galite pasiekti XML žymų turinį. Toliau pažiūrėsime, kaip tiksliai. Jei XML saugomas faile arba siunčiamas naudojant URL (dažniausiai taip būna), tuomet turėtumėte naudoti funkciją simplexml_load_file Dabar turime kintamąjį:

$str = " 25 1000

, kuri sukuria tą patį objektą

$xml = simplexml_load_file(kelias į failą arba URL);

Darbo metodai

Toliau pateiktuose pavyzdžiuose mūsų XML yra saugomas faile arba URL.

$str = " 25 1000

Pateikiame tokį XML:

Gaukime darbuotojo vardą, pavardę, amžių ir atlyginimą:

$xml = simplexml_load_file(kelias į failą arba URL); echo $xml->vardas; //bus rodomas "Kolya" echo $xml->age; //išves 25 echo $xml->alga; //išves 1000

Kaip matote, $xml objektas turi ypatybes, atitinkančias žymes. Galbūt pastebėjote, kad žyma apeliaciniame skunde niekur nematyti.

$str = " 25 1000

Gaukime darbuotojo vardą, pavardę, amžių ir atlyginimą:

Taip yra todėl, kad tai yra šakninė žyma. Galite pervardyti, pavyzdžiui, į

- ir niekas nepasikeis:

$str = " 25 1000

XML gali būti tik viena šakninė žyma, kaip ir

paprastu HTML.

Šiek tiek pakeiskime savo XML:

Tokiu atveju gausime užklausų grandinę:

$xml = simplexml_load_file(kelias į failą arba URL); echo $xml->darbuotojo->vardas; //bus rodomas "Kolya" echo $xml->darbininkas->amžius; //išves 25 echo $xml->darbininkas->alga; //išves 1000

Darbas su atributika

Kai kurie duomenys bus saugomi atributuose:

1 numeris

$str = " $xml = simplexml_load_file(kelias į failą arba URL); echo $xml->darbuotojas["vardas"]; //bus rodomas "Kolya" echo $xml->darbuotojas["amžius"]; //išves 25 echo $xml->darbuotojas["alga"]; //išves 1000 echo $xml->darbuotojas; //bus rodomas „Skaičius 1“

Žymos su brūkšneliais

XML leidžia žymas (ir atributus) su brūkšneliu. Tokiu atveju prieiga prie tokių žymų vyksta taip:

Ivanovas

$str = " 25 1000 $xml = simplexml_load_file(kelias į failą arba URL); echo $xml->darbininkas->(vardas); //bus rodomas "Kolya" echo $xml->darbininkas->(pavardė); //bus rodomas "Ivanov" 26 2000 Kilpos 27 3000

$xml = simplexml_load_file(kelias į failą arba URL); foreach ($xml kaip $worker) ( echo $worker->name; //bus rodoma "Kolya", "Vasya", "Petya" )

Iš objekto į įprastą masyvą

Jei jums nepatogu dirbti su objektu, galite konvertuoti jį į įprastą PHP masyvą naudodami šį triuką:

$xml = simplexml_load_file(kelias į failą arba URL); var_dump(json_decode(json_encode($xml), tiesa));

Daugiau informacijos

Analizuojama pagal sitemap.xml

Dažnai svetainėje yra sitemap.xml failas.

Šiame faile saugomos nuorodos į visus svetainės puslapius, kad paieškos sistemos galėtų lengviau indeksuoti (indeksavimas iš esmės yra svetainės analizė, kurią atlieka „Yandex“ ir „Google“).

Apskritai, neturėtume daug jaudintis dėl to, kodėl šis failas reikalingas, svarbiausia, kad jei jis yra, jums nereikėtų naršyti svetainės puslapiuose naudojant sudėtingus metodus, o tiesiog naudoti šį failą.

Kaip patikrinti šio failo buvimą: leiskite mums išanalizuoti svetainę site.ru, tada naršyklėje eikite į site.ru/sitemap.xml - jei ką nors matote, tada jis yra, o jei nematote, tada deja.

Jei yra svetainės schema, joje yra nuorodos į visus svetainės puslapius XML formatu. Ramiai paimkite šį XML, išanalizuokite, atskirkite nuorodas į jums reikalingus puslapius bet kokiu jums patogiu būdu (pvz., analizuodami URL, kuris buvo aprašytas voro metodu).

Dėl to gausite analizei skirtų nuorodų sąrašą.

Skaitykite daugiau apie sitemap.xml įrenginį Vikipedijoje.

Ką daryti toliau:

Pradėkite spręsti problemas naudodami šią nuorodą: pamokos uždaviniai.

© 2024 ermake.ru - Apie kompiuterių taisymą - Informacinis portalas