Cum se deschide un document XML - caracteristici de lucru cu fișiere XML. Lucrul cu XML în aplicațiile .NET Ce este XML

Acasă / Windows 7

Probabil ați auzit de XML și cunoașteți multe motive pentru care ar trebui să fie utilizat în organizația dvs. Dar ce este mai exact XML? Acest articol explică ce este XML și cum funcționează.

În acest articol

Markupuri, marcare și etichete

Pentru a înțelege XML, este util să vă amintiți cum puteți eticheta datele. Documentele au fost create de oameni de-a lungul mai multor secole și, în tot acest timp, oamenii și-au făcut notițe despre ele. De exemplu, profesorii fac adesea note despre munca elevilor, indicând necesitatea de a muta paragrafe, de a face o propoziție mai clară sau de a corecta greșeli de ortografie etc. Prin marcarea unui document, puteți determina structura, sensul și aspect informaţii. Dacă ați folosit vreodată remedieri rapide în Microsoft Office Word, atunci sunteți familiarizat cu formularul de marcare computerizat.

în lume tehnologia de informație termenul „marcaj” a devenit termenul „marcaj”. Markup folosește coduri numite etichete (sau uneori jetoane) pentru a defini structura, aspectul vizual și, în cazul XML, sensul datelor.

Textul acestui articol în format HTML este bun exemplu aplicarea de marcare pe computer. Dacă la Microsoft Internet Explorer faceți clic pe această pagină clic dreapta mouse-ul și selectați comanda Vedeți codul HTML, veți vedea text care poate fi citit și etichete HTML, cum ar fi

ŞI

. În documentele HTML și XML, etichetele sunt ușor de recunoscut deoarece sunt incluse între paranteze unghiulare. În textul sursă al acestui articol, etichetele HTML îndeplinesc multe funcții, cum ar fi definirea începutului și a sfârșitului fiecărui paragraf (

...

) și locația desenelor.

Caracteristicile XML

Documentele HTML și XML conțin date incluse în etichete, dar aici se termină asemănările dintre cele două limbi. În format Etichete HTML determină designul datelor - locația titlurilor, începutul unui paragraf etc. În formatul XML, etichetele determină structura și semnificația datelor - ce sunt acestea.

Prin descrierea structurii și semnificației datelor, devine posibilă reutilizarea lor în mai multe moduri. De exemplu, dacă aveți un bloc de date de vânzări în care fiecare element este clar definit, puteți încărca doar elementele necesare în raportul de vânzări și transferați celelalte date în baza de date contabilă. Cu alte cuvinte, puteți utiliza un sistem pentru a genera și eticheta date în format XML și apoi procesați acele date în orice alte sisteme, indiferent de platforma client sau sistem de operare. Această compatibilitate face ca XML să fie baza uneia dintre cele mai populare tehnologii de schimb de date.

Vă rugăm să rețineți următoarele când lucrați:

    HTML nu poate fi folosit în loc de XML. Cu toate acestea, datele XML pot fi incluse în etichete HTML și afișate pe pagini web.

    Capacitățile HTML sunt limitate la un set predefinit de etichete care sunt comune tuturor utilizatorilor.

    Regulile XML vă permit să creați orice etichete necesare pentru a descrie datele și structura acestora. Să presupunem că trebuie să stocați și să partajați informații despre animalele de companie. Pentru a face acest lucru, puteți crea următorul cod XML:

    Izzy siamez 6 Da nu Izz138bod Colin Wilcox

După cum puteți vedea, etichetele XML arată clar ce date vizualizați. De exemplu, este clar că datele sunt despre o pisică și îi puteți determina cu ușurință numele, vârsta etc. Deoarece puteți crea etichete care definesc aproape orice structură de date, XML este extensibil.

Dar nu confundați etichetele din acest exemplu cu etichetele din fișierul HTML. De exemplu, dacă textul XML de mai sus este lipit într-un fișier HTML și deschis într-un browser, rezultatele vor arăta astfel:

Izzy Siamese 6 da nu Izz138bod Colin Wilcox

Browserul web va ignora etichetele XML și va afișa numai datele.

Date bine formate

Probabil ați auzit pe cineva din IT vorbind despre un fișier XML „bine format”. Un fișier XML bine format trebuie să respecte reguli foarte stricte. Dacă nu respectă aceste reguli, XML-ul nu funcționează. De exemplu, în exemplul anterior, fiecare etichetă de deschidere are o etichetă de închidere corespunzătoare, astfel încât acest exemplu urmează una dintre regulile unui fișier XML bine format. Dacă eliminați o etichetă dintr-un fișier și încercați să o deschideți într-unul dintre programele Office, va apărea un mesaj de eroare și va fi imposibil să utilizați un astfel de fișier.

Nu trebuie să cunoașteți regulile pentru crearea unui fișier XML bine format (deși nu sunt greu de înțeles), dar amintiți-vă că numai datele XML bine formate pot fi folosite în alte aplicații și sisteme. Dacă fișierul XML nu se deschide, este probabil malformat.

XML este independent de platformă, ceea ce înseamnă că orice program conceput să folosească XML poate citi și procesa date XML, indiferent de hardware sau sistem de operare. De exemplu, dacă aplicați etichetele XML potrivite, puteți utiliza un program desktop pentru a deschide și a procesa datele primite de la mainframe. Și, indiferent de cine a creat datele XML, datele pot fi manipulate într-o varietate de aplicații Office. Datorită compatibilității sale, XML a devenit una dintre cele mai populare tehnologii pentru schimbul de date între bazele de date și computerele utilizatorilor.

Pe lângă datele etichetate bine formate, sistemele XML utilizează de obicei două componente suplimentare: scheme și transformări. Următoarele secțiuni descriu modul în care funcționează.

Scheme

Nu vă lăsați intimidați de termenul „schemă”. O schemă este pur și simplu un fișier XML care conține reguli pentru conținutul fișierului de date XML. Fișierele de schemă au de obicei extensia XSD, în timp ce fișierele de date XML folosesc extensia XML.

Schemele permit programelor să valideze datele. Ele formează structura datelor și asigură înțelegerea acestora pentru creator și alte persoane. De exemplu, dacă utilizatorul introduce date nevalide, cum ar fi text într-un câmp de dată, programul poate solicita utilizatorului să le corecteze. Dacă datele dintr-un fișier XML se potrivesc cu regulile din schemă, puteți utiliza orice program compatibil XML pentru a le citi, interpreta și procesa. De exemplu, așa cum se arată în imaginea de mai jos, Excel poate valida datele pentru conformitatea cu schema CAT.

Circuitele pot fi complexe, iar acest articol nu poate explica cum să le creeze. (De asemenea, există probabil oameni IT în organizația dvs. care știu cum să facă acest lucru.) Cu toate acestea, este util să știți cum arată diagramele. Următoarea diagramă definește regulile pentru un set de etichete ... :

Nu vă faceți griji dacă exemplul nu este clar. Doar fiți atenți la următoarele:

    Elementele șir din schema exemplu se numesc declarații. Dacă sunt necesare informații suplimentare despre animal, cum ar fi culoarea sau caracteristicile speciale ale acestuia, departamentul IT ar adăuga declarații corespunzătoare diagramei. Sistemul XML poate fi modificat pe măsură ce nevoile afacerii evoluează.

    Declarațiile sunt un mijloc puternic de manipulare a structurii datelor. De exemplu, un anunț înseamnă că etichete precum Şi , trebuie să urmeze în ordinea de mai sus. Anunțurile pot valida, de asemenea, tipurile de intrare de utilizator. De exemplu, circuitul de mai sus necesită o intrare cu numere întregi pozitive pentru vârsta pisicii și valori booleene (adevărat sau fals) pentru etichetele ALTERED și DECLAWED.

    Dacă datele dintr-un fișier XML urmează regulile schemei, atunci se spune că datele sunt valide. Procesul de verificare a conformității unui fișier de date XML cu regulile schemei se numește (suficient de logic) validare. Marele avantaj al utilizării schemelor este că pot preveni coruperea datelor. Schemele facilitează, de asemenea, găsirea datelor corupte, deoarece procesarea fișierelor XML se oprește atunci când apare o problemă.

Transformări

După cum sa discutat mai sus, XML permite, de asemenea, utilizarea și reutilizarea eficientă a datelor. Mecanismul de reutilizare a datelor se numește transformare XSLT (sau pur și simplu transformare).

Dumneavoastră (sau departamentul dvs. IT) puteți utiliza, de asemenea, transformări pentru a face schimb de date între sistemele back-end, cum ar fi bazele de date. Să presupunem că baza de date A stochează datele vânzărilor într-un tabel care este util departamentului de vânzări. Baza de date B stochează datele privind veniturile și cheltuielile într-un tabel special conceput pentru contabilitate. Baza de date B poate folosi o transformare pentru a prelua date din baza de date A și a le pune în tabelele corespunzătoare.

Combinația dintre fișierul de date, schema și transformarea formează sistemul XML de bază. Figura următoare arată funcționarea unor astfel de sisteme. Fișierul de date este verificat în raport cu regulile schemei și apoi transmis în orice mod adecvat pentru transformare. În acest caz, transformarea plasează datele într-un tabel pe o pagină web.

Următorul exemplu arată o transformare care încarcă date într-un tabel de pe o pagină web. Scopul exemplului nu este de a explica cum se creează transformări, ci de a arăta una dintre formele pe care acestea le pot lua.

Nume Rasă Vârstă Modificat Delegat Licenţă Proprietar

Acest exemplu arată cum ar putea arăta textul unui tip de transformare, dar rețineți că este posibil să fiți limitat la o descriere clară a ceea ce aveți nevoie din date și că descrierea poate fi făcută în limba dvs. maternă. De exemplu, ați putea merge la departamentul IT și spuneți că trebuie să imprime date de vânzări pentru anumite regiuni din ultimii doi ani și că informațiile ar trebui să arate așa și asta. Departamentul poate apoi să scrie (sau să modifice) o transformare pentru a vă îndeplini solicitarea.

Microsoft și un număr tot mai mare de alte companii creează transformări pentru o varietate de scopuri, făcând XML și mai ușor de utilizat. În viitor, probabil că va fi posibil să descărcați o conversie care se potrivește nevoilor dvs. cu personalizare suplimentară mică sau deloc. Aceasta înseamnă că, în timp, utilizarea XML va deveni din ce în ce mai puțin costisitoare.

XML în sistemul Microsoft Office

Edițiile profesionale ale Office oferă suport XML îmbunătățit. Începând cu Microsoft Office System 2007, Microsoft Office utilizează formate de fișiere bazate pe XML, cum ar fi DOCX, XLSX și PPTX. Deoarece XML stochează datele într-un format text, mai degrabă decât într-un format binar proprietar, clienții își pot defini propriile scheme și pot utiliza datele dumneavoastră într-o varietate de moduri, fără a fi nevoiți să plătească redevențe. Pentru mai multe informații despre noile formate, consultați Open XML Formats și File Name Extensions. Mai jos sunt alte beneficii.

Toate acestea sunt grozave, dar ce se întâmplă dacă aveți date XML fără o schemă? Depinde de ce Program de birou folosesti. De exemplu, când deschideți un fișier XML fără o schemă în Excel, se presupune că schema există și vă permite să încărcați datele într-un tabel XML. Puteți utiliza liste și tabele XML pentru a sorta, filtra și calcula datele.

Activați funcțiile XML în Office

În mod implicit, fila Dezvoltator nu este vizibilă. Trebuie adăugat în panglică pentru a utiliza comenzi XML în Office.

Articolul anterior descria concepte generale referitoare la XML. În acest articol vom învăța cum să efectuăm acțiuni de bază legate de modificarea, adăugarea, căutarea într-un fișier XML.

Fișier XML care este folosit pentru exemplu.

Mazda 2007 BMW 2009

xml dom

ÎN în acest moment, fișierul nostru conține următoarea structură:

Relația dintre nodurile în XML DOM, punctele principale:

1. Orice nod din arborele DOM are un ParentNode părinte. În exemplul nostru, garajul este părintele ambelor elemente ale mașinii, iar ambele elemente ale mașinii sunt, la rândul lor, părinți ale elementelor model și an.

Cum să obțineți părintele elementului xml auto?

Console.WriteLine(elmRoot["masina"].ParentNode.Name); //Rezultat: garaj

2. Un părinte poate avea copii ChildNodes. De exemplu, pentru nodul garaj copiii sunt ambele elemente ale mașinii. Elementele mașinii au și modelul și anul de copii.

ChildNodes, este o colecție care stochează toate elementele XML pentru a accesa elementul dorit, trebuie să specificați indexul acestuia; (Indexul începe întotdeauna de la zero!)

De exemplu: cum să obțineți primul element copil?

ElmRoot.ChildNodes;

3. Ca și în viața obișnuită, un copil se poate naște primul FirstChild sau ultimul LastChild.

Dacă luăm ca exemplu elementul mașină, atunci

FirstChild este modelul LastChild este anul

4. La rândul lor, există și legături între elementele copil acestea pot fi frați sau surori, dacă facem paralele cu viața reală.

Un copil poate avea, de exemplu, un frate anterior și un frate următor

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Rezultat: anul Console.WriteLine(elmRoot.ChildNodes.LastChild.PreviousSibling.Name); //Rezultat: model

Dacă elementul nu este găsit, atunci se aruncă o excepție: NullReferenceException, deci atunci când lucrați cu xml, folosiți întotdeauna blocurile try catch.

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

LastChild este NextSibling;
FirstChild este PreviousSibling;

Folosind metodele descrise mai sus, puteți trece cu ușurință la nodul dorit și puteți obține orice valoare de care aveți nevoie.

Cum să obțineți valoarea unui element xml?

Valoarea xml a unui element poate fi obținută folosind proprietatea InnerText, de exemplu:

Console.WriteLine(elmRoot["masina"].FirstChild.InnerText); //Rezultat: Mazda

O altă modalitate de a obține aceeași valoare a elementului xml:

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

Secvența mișcărilor de-a lungul arborelui DOM:

Garaj -> masina -> model -> Mazda

Primim anul:

ElmRoot[„mașină”].LastChild.InnerText; //Rezultat: 2007

Urmare:

Garaj -> masina -> an -> 2007

Un alt exemplu: 3 moduri de a obține același rezultat.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["mașină"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Rezultat: BMW

Dacă trebuie să obțineți anul pentru un element cu valoarea Mazda:

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

Pentru BMW (două moduri, obțineți același rezultat)

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

Cum se schimbă valorile elementelor xml?

Folosind proprietatea InnerText() Puteți să obțineți și să modificați valoarea unui element xml, de exemplu, să schimbați anul.

//Setați o nouă valoare elmRoot.FirstChild.LastChild.InnerText = "2010"; //Afișează noua valoare pe ecranul consolei Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Rezultat: 2010

În același timp, trebuie să vă amintiți că toate modificările apar cu fișierul xml virtual dacă deschideți fișierul fizic, veți vedea că anul 2007 este încă indicat în el.

Pentru ca modificările să intre în vigoare, trebuie să utilizați metoda Salvare, de exemplu:

ElmRoot.Save ("nume fișier xml sau flux");

Acum informațiile vor fi modificate în fișierul xml „fizic”.

Cum să obțineți numărul de elemente copil?

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

garaj -> masina contine 2 copii: model si an

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

garaj -> mașină -> model conține 1 element xml copil.

Accesarea elementelor copil

prin index

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Rezultat: masina

Folosind o buclă

Foreach (XmlNode nod în elmRoot.ChildNodes) ( Console.WriteLine(nod.Name); ) //Rezultat: mașină, mașină

Cum să obțineți numele elementului xml?

elmRoot.Nume; //Rezultat: garaj

Crearea unui nou element XML

Să creăm un nou element în documentul nostru XML, astfel încât să difere de celelalte două (mașină), să-l numim bus.

La crearea unui element nou, vom folosi recomandarea de pe site-ul msdn și în locul noului XmlElement standard vom folosi metoda CreateElement.

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

Crearea și adăugarea unui nou element xml

Să creăm un nou element xml numit „BUS”.

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //mașină, mașină XmlElement elmNew = xmlDoc.CreateElement("bus"); elmRoot.AppendChild(elmNew); Console.WriteLine(elmRoot.ChildNodes.Count); //3 mașină, mașină, autobuz xmlDoc.Save("nume fișier xml");

Explicaţie:

1. Mai întâi obținem un element rădăcină căruia îi vom atașa elemente noi.

2. Ca verificare, vom afișa numărul curent de elemente copii ale elementului garaj: 2 (mașină și mașină)

3. Creați un nou element BUS

4. Utilizarea metodei AppendChild adăugarea unui nou element în arbore

5. Să folosim din nou verificarea și să afișăm numărul curent de elemente pentru elementul de garaj, acum sunt 3: mașină, mașină, autobuz.

6. Pentru modificări care să afecteze fișierul fizic, salvați

În fișierul XML în sine, noul element va arăta astfel:

Cum se adaugă un nou element xml?

Sarcină: creați un nou element XML și adăugați-i conținut text, de exemplu anul de fabricație.

String strFilename = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = nou 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();

În fișierul XML:

2006

Pentru claritate

Acum să creăm un nod „autobuz” cu aceeași arhitectură ca și mașina, adică să adăugăm noduri: model, an și conținut text.

Crearea unui element XML cu copii

string strFilename = @"C:\lecții\Auto.xml"; //creați unul nou document xmlîn memorie XmlDocument xmlDoc = new XmlDocument(); //încărcați fișierul xml în memorie xmlDoc.Load(strFilename); //Obține elementul rădăcină XmlElement elmRoot = xmlDoc.DocumentElement; //Creează 3 elemente: bus, model, year XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("an"); //Setați valori pentru elemente: model, year XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); adăugați altfel //Adăugați două elemente copil la elementul magistrală: model și anul elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); //Adăugați valori la nodurile model și an elmModel.InnerText = "liaz"; elmYear.AppendChild(year_txt); //Adăugați o nouă magistrală de elemente xml în arborele elmRoot.AppendChild(elmBUS); //Verifică dacă totul este adăugat așa cum ar trebui Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Dacă totul este în ordine, atunci folosiți metoda Salvare xmlDoc.Save("nume fișier xml");

Rezultat:

liaz 2006

Cum pot scurta acest cod? De exemplu, după cum urmează:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = nou XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("an"); //Adăugați valori la nodurile model și an elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); elmRoot.AppendChild(elmBUS); //Dacă totul este corect, atunci apelați metoda Salvare xmlDoc.Save("nume fișier xml");

Să scurtăm codul puțin mai mult, pentru a face acest lucru vom folosi proprietatea InnerXml:

XmlDocument xmlDoc = nou XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); șir txt = " liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (va fi egal cu garaj) - aceasta este o altă modalitate de a accesa elementul rădăcină, la fel ca XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild ( elmXML); xmlDoc.Save(PathXmlFile);

Rezultat

Obțineți o listă de elemente folosind GetElementByTagName

GetElementByTagName revine XmlNodeList, care conține toate elementele descendente aparținând elementului specificat, de exemplu, trebuie să obținem toate modelele de mașini care sunt stocate în garaj:

XmlDocument xmlDoc = nou XmlDocument(); xmlDoc.Load(strFilename); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); foreach (nodul XmlNode în modelName) ( Console.WriteLine(node.InnerText); ) //Rezultat: mazda, bmw, liaz

Acces folosind index:

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

Cum pot schimba conținutul text al unui element „autobuz” nou creat folosind metoda GetElementByTagName?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = nou XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //A primit valoarea: liaz

Sau poți schimba numele liaz în Ikarus

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

Limbajul de marcare extensibil (XML). Este foarte simplu fișiere text, care folosesc etichete personalizate pentru a descrie structura și alte funcții ale unui document.

Ce este XML

XML este un limbaj de marcare creat de World Wide Web Consortium (W3C) pentru a defini o sintaxă pentru codificarea documentelor care pot fi citite de oameni și mașini. Face acest lucru prin etichete, care definesc structura documentului, precum și modul în care documentul ar trebui să fie stocat și transportat.

Cel mai simplu mod de a-l compara cu un alt limbaj de marcare cu care ați putea fi familiarizat este marcare hipertext(HTML) folosit pentru a codifica pagini web. HTML folosește un set predefinit de caractere de marcare (coduri scurte) care descriu formatul conținutului dintr-o pagină web.

Cu toate acestea, diferența cu XML este că este extensibil. XML nu are un limbaj de marcare predefinit precum HTML. În schimb, XML permite utilizatorilor să-și creeze propriile caractere de marcare pentru a descrie conținutul, creând un set nelimitat și autodefinibil de caractere.

În esență, HTML este un limbaj care se concentrează pe prezentarea conținutului, în timp ce XML este un limbaj dedicat pentru descrierea datelor, folosit pentru stocarea datelor.

XML este adesea folosit ca bază pentru alte formate de documente, dintre care există sute. Iată câteva pe care poate doriți să le știți:

  • RSS și ATOM descriu modul în care aplicațiile ar trebui să gestioneze fluxurile web.
  • Microsoft .NET folosește XML pentru fișierele de configurare.
  • Microsoft Office folosește XML ca bază pentru structura documentului.

Deci, dacă aveți un fișier XML, acesta nu vă spune neapărat pentru ce aplicație este. Cu toate acestea, nu trebuie să vă faceți griji cu privire la acest lucru decât dacă dezvoltați fișiere XML.

Cum se deschide un fișier XML

Există mai multe moduri de a deschide direct un fișier XML. Le puteți deschide și edita cu orice editor de text, le puteți vizualiza cu orice browser web sau puteți utiliza un site web care vă permite să le vizualizați, să editați și chiar să le convertiți în alte formate.

Utilizați un editor de text atunci când lucrați cu XML în mod regulat

Deoarece fișierele XML sunt pur și simplu fișiere text, ele pot fi deschise în orice editor de text. Cu toate acestea, multe editoare de text, cum ar fi Notepad, pur și simplu nu sunt concepute pentru a afișa fișiere XML cu structura lor corectă. Acest lucru poate fi util pentru a vă familiariza rapid cu conținutul unui fișier XML. Dar, există instrumente mai convenabile pentru a lucra cu ei.


Utilizarea unui browser web pentru a vizualiza un fișier XML

Dacă nu trebuie să editați fișierul XML, ci doriți doar să vizualizați conținutul, browserul dvs. se poate ocupa de această sarcină. În plus, browserul dvs. web este cel mai probabil deja configurat ca remediu standard vizualizarea fișierelor XML. Deci, dublu clic pe fișierul XML ar trebui să îl deschidă în browser.

Dacă nu, puteți face clic dreapta pe fișier pentru a găsi opțiuni pentru a-l deschide cu orice altă aplicație. Pur și simplu selectați browserul dvs. web din lista de programe.

Când fișierul se deschide, ar trebui să vedeți date bine structurate. Nu este la fel de frumos ca aspectul de culoare pe care îl obțineți în Notepad++, dar este mult mai bun decât notepad.

Utilizarea unui editor online pentru fișiere XML

Dacă doriți să editați un fișier XML aleatoriu și nu doriți să descărcați un nou editor de text, sau aveți nevoie converti fișierul xml într-un alt format Există mai multe editoare XML online decente disponibile gratuit.

TutorialsPoint.com, XMLGrid.net și CodeBeautify.org - Vă permit să vizualizați și să editați fișiere XML. Odată ce editarea este completă, puteți descărca fișierul XML modificat sau chiar îl puteți converti într-un alt format.

De exemplu, folosim CodeBeautify.org. Pagina este împărțită în trei secțiuni. În stânga este fișierul XML cu care lucrați. În mijloc vei găsi mai multe funcții. În dreapta veți vedea rezultatele unora dintre opțiunile din care puteți alege.

De exemplu, în imaginea de mai jos, fișierul nostru XML complet este în stânga, iar panoul de rezultate arată o vizualizare arborescentă, deoarece am făcut clic pe butonul Vizualizare arborescentă din mijloc.

Utilizați butonul Răsfoire pentru a încărca un fișier XML de pe computer sau butonul Încărcare URL pentru a prelua XML dintr-o sursă online

Butonul Tree View afișează datele într-o structură arborescentă bine formatată în panoul de rezultate, cu toate etichetele evidențiate în portocaliu și atributele în partea dreaptă a etichetelor.

Beatify vă afișează datele într-un format ordonat, ușor de citit.

Butonul Reducere vă afișează datele folosind cât mai puține spații posibil. Această funcție va plasa fiecare parte de date pe o singură linie. Acest lucru va fi util atunci când încercați să faceți un fișier mai mic, ceea ce va economisi ceva spațiu.

Și, în sfârșit, puteți folosi butonul XML la JSON pentru a Transformări XMLîn format JSON și un buton Export în CSV pentru a salva datele ca fișier cu valori separate prin virgulă sau un buton Descărcare pentru a descărca orice modificări pe care le-ați făcut noului fișier XML.

A trecut destul de mult timp de când am promis că voi vorbi despre lucrul cu date în format XML atunci când dezvoltăm aplicații .NET. Promisiunile trebuie respectate. Vă rugăm să rețineți că acest articol nu se adresează dezvoltatorilor profesioniști .NET, ci celor care nu au încă o experiență semnificativă în crearea de aplicații .NET.


De ce ar trebui să lucrăm cu XML?

Dacă nu aveți încă o idee foarte bună despre ce este XML, atunci vă recomand să citiți articolul „XML este serios și de mult timp” din „KV” Nr. pentru 2007. Pentru a economisi spațiu pentru lucruri mai importante, formatul XML în sine nu va fi analizat aici.

Înainte de a începe să vă familiarizați cu codul programului, trebuie să răspundeți la o întrebare fundamentală: de ce să includeți chiar și suport XML în aplicația dvs.? Cred că mulți și-au pus această întrebare cu privire la multe tehnologii și nu toate au fost incluse în aplicații după răspuns. Cu toate acestea, cu XML situația este oarecum diferită și există motive reale pentru a utiliza acest format în multe situații.

Principalul avantaj al XML este că, fiind un format text prin natură, permite totuși perfect stocarea și transmiterea oricăror date. Deoarece acest format este text, problema multiplatformei sale este rezolvată de la sine, iar problema transmiterii datelor XML este la fel de ușor de rezolvat (cum se face, de exemplu, în SOAP). În plus, puteți schimba cu ușurință formatul de transfer sau de stocare a datelor adăugând noi atribute și fără a vă face griji prea mult cu privire la compatibilitatea cu versiunile anterioare ale formatului, deoarece aplicațiile care folosesc versiunea veche vor putea citi ceea ce au nevoie fără să acorde atenție noilor. etichete sau atribute . Multe aplicații folosesc XML formate de fișiere, multe protocoale de transfer de date se bazează și pe XML, iar listele ambelor continuă să crească.

Desigur, pe de altă parte, XML nu este foarte economic, deoarece, după cum a remarcat corect unul dintre vizitatorii forumului Computer News, documentele XML constau adesea în 10% date și 90% etichete. Totuși, acest lucru depinde în mare măsură de etichetele pe care le alegeți. Poți scrie Sf. Melnikaite, 2, Este posibil . Deși, să fiu sincer, mi se pare că cu hard disk-urile actuale și canalele groase nu are rost să fii deosebit de comprimat.

Deci, în mâinile potrivite, XML este un lucru puternic și convenabil și, datorită omniprezenței acestui format, nu puteți scăpa deloc de el. Deci, să trecem la scris codul programului.

Pentru programare vom folosi limbajul principal al platformei .NET - C#. Pentru ca cât mai mulți cititori să exerseze ei înșiși cu codul de program dat, voi folosi prima versiune de C# și .NET Framework.


Înregistrarea datelor

Mai întâi, să vorbim despre scrierea datelor, pentru că, știi, pentru a citi ceva de undeva, trebuie mai întâi să scrii ceva undeva. Și din moment ce tu și cu mine am început să programăm, nu este potrivit să creăm manual date XML. Deci, să începem mai întâi cu scrierea datelor în XML.

Mai întâi, creați un nou proiect în Visual Studio, #Develop sau C# Builder și adăugați System.Xml la lista de spații de nume importate.

O clasă specială, XmlTextWriter, este responsabilă pentru scrierea datelor XML în .NET Framework, care vă permite să scrieți date XML într-un flux arbitrar Adică, în general, le putem folosi pentru a le scrie într-un fișier, o bază de date , și trimiteți cuiva prin Internet, dar acum vom scrie totul într-un fișier. Puteți redirecționa ieșirea schimbând constructorul obiectului (adică, nu transmiteți numele fișierului și codificarea acestuia în timpul inițializării, ci un obiect care este o dată. stream). Cred că am ajuns deja puțin înaintea mea. Să ne familiarizăm mai întâi cu codul responsabil pentru scrierea datelor în fișierul nostru XML.

String FileName = "c:\\demo.xml"; XmlTextWriter xml = XmlTextWriter nou (FileName, System.Text.Encoding.Unicode); xml.Formatting = Formatare.Indentat; xml.WriteStartDocument(); xml.WriteStartElement("element rădăcină"); pentru (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();

Prima linie, cred, este destul de clară - este pur și simplu înregistrarea numelui fișierului în care vom salva datele. În continuare, creăm un obiect de tip XmlTextWriter (se numește, după cum puteți vedea, xml) și cu acesta vom efectua toate operațiunile ulterioare. Vă rugăm să rețineți că atunci când construim un obiect, specificăm și codarea în care va fi scris XML: în exemplul nostru, acesta este Unicode. Linia următoare, în general, nu este necesară, dar va face documentul nostru XML, așa cum se spune, să fie citit de om, adică va adăuga indentările necesare și îl va despărți în linii. Fără aceasta, întregul document ar fi scris într-o singură linie, ceea ce, deși economisește spațiu, îl face practic nepotrivit pentru editare manuală.

Scrierea documentelor începe prin apelarea metodei WriteStartDocument() a obiectului nostru xml. Rândul care îl urmează adaugă elementul rădăcină „rootelement” în documentul nostru XML (vă reamintesc că pentru documentele XML elementul rădăcină trebuie să fie prezent într-o singură copie). Apoi, într-un ciclu, adăugăm încă zece elemente care nu poartă nicio încărcare semantică documentului nostru XML, pentru fiecare dintre ele setăm două atribute și încă zece subelemente. Vă rugăm să rețineți că putem adăuga un număr la un șir fără a converti în mod explicit datele, dar dacă numărul trebuie să formeze în întregime un șir, atunci acesta trebuie convertit în mod explicit folosind metoda ToString(). De asemenea, rețineți că trebuie să închidem în mod explicit fiecare dintre elementele documentului nostru XML și apoi întregul document.

Acum că documentul nostru XML a fost scris cu succes, să vedem cum putem citi datele din el.


Citirea datelor

Adăugați o componentă listBox la forma aplicației dvs. (cu excepția cazului în care, desigur, este o aplicație de consolă), astfel încât să puteți monitoriza rezultatul citirii fișierului XML. Ei bine, dacă programul dvs. este un program de consolă, atunci puteți redirecționa cu ușurință ieșirea către consolă.

Ca de obicei, să ne familiarizăm mai întâi cu codul programului și apoi ne vom uita la ce face exact acest cod.

XmlTextReader xml = new XmlTextReader(FileName); xml.WhitespaceHandling = WhitespaceHandling.None; int i = 0; în timp ce (xml.Read())( dacă ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "subelement")) ( listBox1.Items.Add ("subelement " + i + " găsit") ; i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); )( listBox1.Items.Add(" " + xml.GetAttribute("attr")); ) ) ) xml.Close();

Pentru citire, după cum probabil ați observat, folosim o altă clasă, și anume XmlTextReader. Este în același spațiu de nume ca și clasa pe care am folosit-o pentru a scrie datele. În prima linie, creăm o instanță de XmlTextReader, denumită xml (aici presupunem că variabila FileName a fost deja definită de noi mai devreme pentru a sări peste liniile goale dacă acestea apar în mod inexplicabil în fișierul XML tocmai creat, folosim următoarele). linia din fragmentul de cod dat Variabila i este utilizată pentru a număra numărul de elemente „subelement” găsite în fișierul XML din care sunt citite datele.

Urmează ciclul de citire directă a datelor din fișier. Metoda Read() citește următorul element al documentului XML, iar după ce îl citim, verificăm exact ce citim. Dacă este într-adevăr un element „subelement”, atunci adăugăm informații despre elementul citit în listBox1, incrementăm o variabilă care conține numărul de elemente citite și apoi citim atributele elementului. După citirea atributelor, organizăm o buclă separată pentru a citi subelementele (rețineți că nu avem nevoie de un XmlTextReader separat pentru aceasta) și atributele acestor subelemente Ca și înainte, introducem toate informațiile citite în listBox1 pentru a controla corectitudinea lectură.

Când citiți fișiere XML, la fel ca atunci când le scrieți, când construiți un XmlTextReader, puteți specifica ca parametru fluxul din care să citiți și apoi puteți citi nu numai din fișiere, ci și din alte surse, exemple din care am avut Ar trebui remarcată o caracteristică utilă a clasei XmlTextReader: atunci când citiți, nu încarcă în memorie întregul document XML citit, deci este convenabil să analizați documente XML mari (de exemplu, baze de date XML).


În culise

În general, exemplul pe care tocmai l-am discutat este prea simplu pentru proiecte reale. În zilele noastre, la citirea documentelor XML, acestea sunt de obicei validate folosind DTD, XML Schema sau Relax NG. Validarea înseamnă verificarea faptului că marcajul unui document XML este conform cu un standard descris în fișier extern. Validarea este necesară pentru ca verificarea documentelor să nu fie conectată în algoritmul programului, dar să poată fi schimbată în mod arbitrar atunci când formatul datelor se modifică fără a actualiza codul programului care citește sau scrie datele. Din păcate, acum nu vom avea timp să rezolvăm validarea, deoarece, după cum înțelegeți voi, volumul unui articol de ziar are anumite limitări.

Un alt punct practic interesant și util în ceea ce privește lucrul cu date XML este transformarea datelor XSL. Această transformare se aplică datelor atunci când sunt afișate pe pagini HTML și, de fapt, este pur și simplu aplicarea unui șablon de pagină web specific unui fișier XML care conține anumite date. Deoarece cea mai mare parte a utilizării curente a datelor XML este într-un fel sau altul pe World Wide Web, ar fi foarte, foarte bine să luăm în considerare transformările XSL.

Așadar, cred că acest articol va avea o continuare - dar, bineînțeles, doar dacă tu însuți (adică cititorii Computer News) întrebi despre asta pe forum sau într-o scrisoare către adresa mea de e-mail. Deocamdată, asta este probabil totul despre utilizarea XML în aplicațiile .NET. Sper că aceste informații vă sunt utile.

Acum vom studia lucrul cu XML.

XML este un format pentru schimbul de date între site-uri.

Ce este un API? Acesta este un set de funcții cu care puteți trimite o solicitare către acest site și puteți primi răspunsul dorit.

Acest răspuns vine cel mai adesea în format XML. Deci, să începem să-l studiem.

Lucrul cu XML în PHP

Să presupunem că aveți XML. Poate fi într-un șir, sau stocat într-un fișier sau difuzat la cerere la o anumită adresă URL. Lăsați XML-ul să fie stocat într-un șir. În acest caz, trebuie să creați un obiect din acest șir folosind:

nou SimpleXMLElement $str = " 25 1000 Kolya

"; $xml = nou SimpleXMLElement($str); Acum avem în variabilă$xml

este stocat un obiect cu XML analizat. Accesând proprietățile acestui obiect, puteți accesa conținutul etichetelor XML. Ne vom uita mai jos cum anume. Dacă XML-ul este stocat într-un fișier sau trimis prin accesarea unei adrese URL (care este cel mai adesea cazul), atunci ar trebui să utilizați funcția simplexml_load_file Acum avem în variabilă:

$str = " 25 1000

, care face același obiect

$xml = simplexml_load_file(calea către fișier sau URL);

Metode de lucru

În exemplele de mai jos, XML-ul nostru este stocat într-un fișier sau într-un URL.

$str = " 25 1000

Să fie dat următorul XML:

Să obținem numele, vârsta și salariul angajatului:

$xml = simplexml_load_file(calea către fișier sau URL); echo $xml->nume; //va afișa „Kolya” echo $xml->age; //va scoate 25 echo $xml->salariu; //va scoate 1000

După cum puteți vedea, obiectul $xml are proprietăți corespunzătoare etichetelor. Poate ați observat că eticheta nu apare nicăieri în recurs.

$str = " 25 1000

Să obținem numele, vârsta și salariul angajatului:

Acest lucru se datorează faptului că este eticheta rădăcină. Îl puteți redenumi, de exemplu, în

- și nimic nu se va schimba:

$str = " 25 1000

Nu poate exista decât o singură etichetă rădăcină în XML, la fel ca

în HTML simplu.

Să modificăm puțin XML-ul nostru:

În acest caz, vom primi un lanț de solicitări:

$xml = simplexml_load_file(calea către fișier sau URL); echo $xml->lucrător->nume; //va afișa „Kolya” echo $xml->worker->age; //va scoate 25 echo $xml->worker->salary; //va scoate 1000

Lucrul cu atribute

Lasă unele date să fie stocate în atribute:

Numărul 1

$str = " $xml = simplexml_load_file(calea către fișier sau URL); echo $xml->worker["nume"]; //va afișa "Kolya" echo $xml->worker["varsta"]; //va scoate 25 echo $xml->worker["salariu"]; //va scoate 1000 echo $xml->worker; //va afișa „Numărul 1”

Etichete cu cratime

XML permite etichete (și atribute) cu o cratimă. În acest caz, accesarea unor astfel de etichete se face astfel:

Ivanov

$str = " 25 1000 $xml = simplexml_load_file(calea către fișier sau URL); echo $xml->worker->(prenume); //va afișa „Kolya” echo $xml->worker->(nume); //va afișa „Ivanov” 26 2000 Buclă 27 3000

$xml = simplexml_load_file(calea către fișier sau URL); foreach ($xml ca $worker) ( echo $worker->name; //va afișa „Kolya”, „Vasya”, „Petya” )

De la obiect la matrice normală

Dacă nu vă simțiți confortabil să lucrați cu obiectul, îl puteți converti într-o matrice PHP normală folosind următorul truc:

$xml = simplexml_load_file(calea către fișier sau URL); var_dump(json_decode(json_encode($xml), true));

Mai multe informații

Analiza bazată pe sitemap.xml

Adesea, un site are un fișier sitemap.xml.

Acest fișier stochează link-uri către toate paginile site-ului pentru ușurința indexării de către motoarele de căutare (indexarea este în esență analizarea site-ului de către Yandex și Google).

În general, nu ar trebui să ne îngrijorăm prea mult de ce este necesar acest fișier, principalul lucru este că, dacă există, nu trebuie să vă accesați cu crawlere paginile site-ului folosind metode complicate, ci pur și simplu să utilizați acest fișier.

Cum să verificați prezența acestui fișier: permiteți-ne să analizăm site-ul site.ru, apoi accesați site.ru/sitemap.xml în browser - dacă vedeți ceva, atunci este acolo, iar dacă nu îl vedeți, apoi vai.

Dacă există o hartă a site-ului, atunci aceasta conține link-uri către toate paginile site-ului în format XML. Luați cu calm acest XML, analizați-l, linkuri separate către paginile de care aveți nevoie în orice mod convenabil pentru dvs. (de exemplu, analizând URL-ul, care a fost descris în metoda spider).

Ca rezultat, obțineți o listă de link-uri pentru analiza, tot ce trebuie să faceți este să accesați ele și să analizați conținutul de care aveți nevoie.

Citiți mai multe despre dispozitivul sitemap.xml pe Wikipedia.

Ce ar trebui să faci în continuare:

Începeți să rezolvați probleme folosind următorul link: probleme pentru lecție.

© 2024 ermake.ru -- Despre repararea PC-ului - Portal de informații