Måter å behandle xml i c. Arbeide med XML i .NET-applikasjoner

Du har sikkert hørt om XML og det er mange grunner til at du bør bruke det i din organisasjon. Men hva er egentlig XML? Denne artikkelen forklarer hva XML er og hvordan det fungerer.

I denne artikkelen

Markups, markups og tags

For å forstå XML er det nyttig å huske hvordan du kan merke data. Dokumenter har blitt laget av mennesker i mange århundrer, og i hele denne tiden har folk gjort notater i dem. Lærere markerer for eksempel ofte elevenes arbeid for å indikere behovet for å flytte avsnitt, gjøre en setning klarere, rette stavefeil osv. Merking av et dokument kan bestemme strukturen, betydningen og utseendet til informasjon. Hvis du noen gang har brukt rettelser i Microsoft Office Word, er du kjent med det datastyrte merknadsskjemaet.

I informasjonsteknologiens verden har begrepet "tagging" blitt begrepet "markup". Markup bruker koder kalt tagger (eller noen ganger tokens) for å definere strukturen, det visuelle utseendet og - i tilfellet med XML - betydningen av dataene.

HTML-teksten i denne artikkelen er et godt eksempel på bruken av datamaskinmarkering. Hvis du høyreklikker denne siden i Microsoft Internet Explorer og velger Se HTML-kode, vil du se lesbar tekst og HTML-koder som

OG

. I HTML- og XML-dokumenter er tagger lette å gjenkjenne fordi de er omsluttet av vinkelparenteser. I kildekoden for denne artikkelen utfører HTML-tagger mange funksjoner, for eksempel å definere starten og slutten av hvert avsnitt (

...

) og plasseringen av tegningene.

Karakteristiske trekk ved XML

Dokumenter i HTML- og XML-format inneholder data innelukket i tagger, men det er der likhetene mellom de to språkene slutter. I HTML-format definerer tagger presentasjonen av data – plasseringen av overskrifter, begynnelsen av et avsnitt osv. I XML-format definerer tags strukturen og betydningen av data – hva det er.

Når man skal beskrive strukturen og betydningen av data, blir det mulig å gjenbruke dem på flere måter. Hvis du for eksempel har en blokk med salgsdata der hvert element er tydelig definert, kan du bare laste inn de nødvendige elementene i salgsrapporten og overføre de andre dataene til regnskapsdatabasen. Du kan med andre ord bruke ett system til å generere data og merke dem i XML-format, og deretter behandle disse dataene i et hvilket som helst annet system, uavhengig av klientplattform eller operativsystem. Denne interoperabiliteten gjør XML til ryggraden i en av de mest populære datautvekslingsteknologiene.

Husk følgende når du arbeider:

    HTML kan ikke brukes i stedet for XML. XML-data kan imidlertid pakkes inn i HTML-tagger og vises på nettsider.

    HTML-funksjoner er begrenset til et forhåndsdefinert sett med tagger som er felles for alle brukere.

    XML-regler lar deg lage eventuelle tagger som kreves for å beskrive dataene og strukturen. La oss si at du må lagre og dele informasjon om kjæledyr. For å gjøre dette kan du opprette følgende XML-kode:

    Izzy Siamesisk 6 ja Nei Izz138bod Colin Wilcox

Som du kan se, gjør XML-taggene det klart hvilke data du ser på. For eksempel er det tydelig at dette er data om en katt, og du kan enkelt bestemme navnet, alderen osv. Med muligheten til å lage tagger som definerer nesten hvilken som helst datastruktur, kan XML utvides.

Men ikke forveksle kodene i dette eksemplet med kodene i HTML-filen. Hvis for eksempel XML-teksten ovenfor limes inn i en HTML-fil og åpnes i en nettleser, vil resultatene se slik ut:

Izzy Siamese 6 ja nei Izz138bod Colin Wilcox

Nettleseren ignorerer XML-taggene og viser kun dataene.

Godt utformet data

Du har sikkert hørt noen innen IT snakke om en "velformet" XML-fil. En godt utformet XML-fil må følge svært strenge regler. Hvis den ikke følger disse reglene, fungerer ikke XML. For eksempel, i det forrige eksemplet, har hver startkode en tilsvarende sluttkode, så dette eksemplet følger en av reglene for en godt utformet XML-fil. Hvis du fjerner en kode fra filen og prøver å åpne den i et av Office-programmene, vil du motta en feilmelding og du vil ikke kunne bruke en slik fil.

Du trenger ikke kjenne reglene for å lage en velutformet XML-fil (selv om de er enkle å forstå), men husk at kun velutformede XML-data kan brukes i andre applikasjoner og systemer. Hvis XML-filen ikke åpnes, er den sannsynligvis feil utformet.

XML er plattformuavhengig, noe som betyr at ethvert program bygget for å bruke XML kan lese og behandle XML-data uavhengig av maskinvare eller operativsystem. For eksempel, med de riktige XML-taggene, kan du bruke et skrivebordsprogram til å åpne og behandle data mottatt fra stormaskinen. Og uavhengig av hvem som har laget XML-dataene, er det mulig å jobbe med dataene i ulike Office-applikasjoner. På grunn av interoperabiliteten har XML blitt en av de mest populære teknologiene for utveksling av data mellom databaser og brukerdatamaskiner.

I tillegg til godt utformede taggede data, bruker XML-systemer vanligvis to tilleggskomponenter: skjemaer og transformasjoner. De følgende avsnittene beskriver hvordan de fungerer.

Ordninger

Ikke la deg skremme av begrepet "ordning". Et skjema er ganske enkelt en XML-fil som inneholder regler for innholdet i en XML-datafil. Skjemafiler har vanligvis filtypen .xsd, mens XML-datafiler bruker filtypen .xml.

Skjemaer lar programmer validere data. De danner strukturen til dataene og gjør dem forståelige for skaperen og andre mennesker. For eksempel, hvis brukeren skriver inn ugyldige data, for eksempel tekst i et datofelt, kan programmet be brukeren om å rette det. Hvis dataene i XML-filen samsvarer med reglene i skjemaet, kan du bruke et hvilket som helst program som støtter XML til å lese, tolke og behandle det. For eksempel, som vist i figuren nedenfor, kan Excel validere data for overholdelse av CAT-ordningen.

Skjemaer kan være komplekse, og det er umulig å forklare hvordan du lager dem i denne artikkelen. (Det er også sannsynlig at organisasjonen din har IT-personell som vet hvordan dette skal gjøres.) Det er imidlertid nyttig å vite hvordan diagrammene ser ut. Følgende skjema definerer reglene for et sett med tagger ... :

Ikke bekymre deg hvis eksemplet ikke gir mening. Bare vær oppmerksom på følgende:

    De innebygde elementene i eksempelskjemaet kalles deklarasjoner. Hvis det var nødvendig med ytterligere detaljer om dyret, for eksempel farge eller spesielle egenskaper, vil IT-avdelingen legge til passende erklæringer i skjemaet. XML-systemet kan endres etter hvert som forretningsbehovene utvikler seg.

    Erklæringer er en kraftig måte å kontrollere strukturen til data på. For eksempel annonse betyr tagger som Og , må være i rekkefølgen ovenfor. Erklæringer kan også kontrollere typene brukerinndata. Skjemaet ovenfor krever for eksempel et positivt heltall for kattens alder og booleantallet (TRUE eller FALSE) for ALTERED og DECLAWED-taggene.

    Hvis dataene i XML-filen samsvarer med reglene i skjemaet, sies dataene å være gyldige. Prosessen med å kontrollere at en XML-datafil er i samsvar med skjemaregler kalles (logisk nok) validering. En stor fordel med å bruke skjemaer er at de kan forhindre datakorrupsjon. Skjemaer gjør det også lettere å finne ødelagte data fordi når et slikt problem oppstår, stoppes behandlingen av XML-filen.

Transformasjoner

Som diskutert ovenfor tillater XML også effektiv bruk og gjenbruk av data. Datagjenbruksmekanismen kalles en XSLT-transformasjon (eller ganske enkelt transformasjon).

Du (eller din IT-avdeling) kan også bruke transformasjoner til å utveksle data mellom back-end-systemer, for eksempel mellom databaser. Anta at database A har salgsdata i en tabell som er nyttig for salgsavdelingen. Database B lagrer inntekts- og utgiftsdata i en tabell spesielt designet for regnskap. Database B kan bruke en transformasjon til å ta data fra database A og sette dem inn i de riktige tabellene.

Kombinasjonen av en datafil, skjema og transformasjon danner det underliggende XML-systemet. Følgende figur viser driften av slike systemer. Datafilen kontrolleres mot reglene i skjemaet og sendes deretter inn på en passende måte for transformasjon. I dette tilfellet plasserer transformasjonen dataene i en tabell på nettsiden.

Følgende eksempel viser en transformasjon som laster data til en tabell på en nettside. Poenget med eksemplet er ikke å forklare hvordan man skaper transformasjoner, men å vise en av formene de kan ta.

Navn Rase Alder endret Declawed Tillatelse Eieren

Dette eksemplet viser hvordan teksten til en av transformasjonstypene kan se ut, men husk at du kan begrense deg til en tydelig beskrivelse av hva du trenger fra dataene, og denne beskrivelsen kan gjøres på ditt eget språk. Du kan for eksempel gå til IT-avdelingen og si at du må skrive ut salgsdata for bestemte regioner for de siste to årene, og at denne informasjonen skal se slik ut og sånn. Etter det kan avdelingsspesialistene skrive (eller endre) transformasjonen for å oppfylle forespørselen din.

Microsoft og et økende antall andre selskaper lager transformasjoner for en rekke oppgaver som gjør bruken av XML enda mer praktisk. I fremtiden vil det mest sannsynlig være mulig å laste ned en konvertering som passer dine behov med liten eller ingen tilpasning. Dette betyr at over tid vil bruken av XML bli mindre og rimeligere.

XML i Microsoft Office-systemet

Profesjonelle utgaver av Office gir forbedret støtte for XML. Fra og med 2007 Microsoft Office System, bruker Microsoft Office XML-baserte filformater som DOCX, XLSX og PPTX. Fordi XML lagrer data i et tekstformat i stedet for sitt eget binære format, kan klienter definere sine egne skjemaer og bruke dataene dine på mange måter uten å måtte betale royalties. For mer informasjon om de nye formatene, se Åpne XML-formater og filnavnutvidelser. Nedenfor er andre fordeler.

Alt dette er flott, men hva om du har XML-data uten skjema? Det avhenger av hvilket Office-program du bruker. For eksempel, når du åpner en XML-fil uten et skjema i Excel, antar den at skjemaet eksisterer og lar deg laste inn dataene i en XML-tabell. Du kan bruke XML-lister og tabeller til å sortere, filtrere og beregne data.

Aktiver XML-verktøy i Office

Som standard vises ikke Utvikler-fanen. Det må legges til på båndet for å bruke XML-kommandoene i Office.

Nå skal vi studere arbeid med XML. XML er et format for utveksling av data mellom nettsteder. Det er veldig likt HTML, bare XML tillater sine egne tagger og attributter.

Hvorfor trengs XML for å analysere? Noen ganger hender det at nettstedet du må analysere har et API som lar deg få det du vil ha uten mye anstrengelse. Råd derfor umiddelbart - før du analyserer nettstedet, sjekk om det har et API.

Hva er en API? Dette er et sett med funksjoner som du kan sende en forespørsel til dette nettstedet med og få ønsket svar. Dette svaret kommer oftest i XML-format. Så la oss begynne å studere det.

Arbeide med XML i PHP

La oss si at du har XML. Det kan være i en streng, lagret i en fil eller servert på forespørsel til en bestemt URL.

La XML-en lagres i en streng. I dette tilfellet må du lage et objekt fra denne linjen ved å bruke nytt SimpleXMLElement:

$str = " Kolya 25 1000 "; $xml = nytt SimpleXMLElement($str);

Nå har vi en variabel $xml et objekt med analysert XML lagres. Ved å få tilgang til egenskapene til dette objektet kan du få tilgang til innholdet i XML-taggene. Hvordan nøyaktig - vi vil analysere litt lavere.

Hvis XML er lagret i en fil eller returnert ved å gå til en URL (som oftest er tilfellet), bør du bruke funksjonen simplexml_load_file som gjør det samme objektet $xml:

Kolya 25 1000

$xml = simplexml_load_file(filbane eller url);

Arbeidsmetoder

I eksemplene nedenfor er vår XML lagret i en fil eller URL.

La følgende XML gis:

Kolya 25 1000

La oss få navn, alder og lønn til en ansatt:

$xml = simplexml_load_file(filbane eller url); echo $xml->navn; //viser "Kolya" echo $xml->age; //outputs 25 echo $xml->lønn; //utganger 1000

Som du kan se, har $xml-objektet egenskaper som tilsvarer kodene.

Du har kanskje lagt merke til at taggen vises ikke noe sted i omløp. Dette er fordi det er root-taggen. Du kan endre navn på den, for eksempel til - og ingenting vil endre seg:

Kolya 25 1000

$xml = simplexml_load_file(filbane eller url); echo $xml->navn; //viser "Kolya" echo $xml->age; //outputs 25 echo $xml->lønn; //utganger 1000

Det kan bare være én root tag i XML, akkurat som root tag i vanlig HTML.

La oss endre XML-en litt:

Kolya 25 1000

I dette tilfellet får vi en kjede av samtaler:

$xml = simplexml_load_file(filbane eller url); echo $xml->arbeider->navn; //viser "Kolya" echo $xml->worker->age; //outputs 25 echo $xml->arbeider->lønn; //utganger 1000

Arbeid med attributter

La noen data lagres i attributter:

Nummer 1

$xml = simplexml_load_file(filbane eller url); echo $xml->arbeider["navn"]; //viser "Kolya" echo $xml->worker["age"]; //outputs 25 echo $xml->worker["lønn"]; //outputs 1000 echo $xml->worker; //skriver ut "Nummer 1"

Tagger med bindestreker

I XML er tagger (og attributter) med bindestrek tillatt. I dette tilfellet får man tilgang til slike tagger slik:

Kolya Ivanov

$xml = simplexml_load_file(filbane eller url); echo $xml->worker->(fornavn); //viser "Kolya" echo $xml->worker->(etternavn); //viser "Ivanov"

Løkkeiterasjon

La oss nå ikke ha én arbeider, men flere. I dette tilfellet kan vi iterere over objektet vårt med en foreach loop:

Kolya 25 1000 Vasya 26 2000 Peter 27 3000

$xml = simplexml_load_file(filbane eller url); foreach ($xml som $worker) ( echo $worker->name; //skriver ut "Kolya", "Vasya", "Petya" )

Fra objekt til normal array

Hvis du ikke føler deg komfortabel med å jobbe med et objekt, kan du konvertere det til en vanlig PHP-array med følgende triks:

$xml = simplexml_load_file(filbane eller url); var_dump(json_decode(json_encode($xml), true));

Mer informasjon

Parsing basert på sitemap.xml

Ofte har et nettsted en sitemap.xml-fil. Denne filen lagrer lenker til alle sidene på nettstedet for å gjøre det enklere å indeksere dem av søkemotorer (indeksering er faktisk å analysere nettstedet av Yandex og Google).

Generelt bør vi ikke bry oss mye om hvorfor denne filen er nødvendig, det viktigste er at hvis den eksisterer, kan du ikke klatre på sidene på nettstedet med noen vanskelige metoder, men bare bruke denne filen.

Slik sjekker du tilstedeværelsen av denne filen: la oss analysere nettstedet site.ru, og se deretter site.ru/sitemap.xml i nettleseren - hvis du ser noe, er det der, og hvis du ikke ser det, da dessverre.

Hvis det er et nettstedskart, inneholder det lenker til alle sidene på nettstedet i XML-format. Ta gjerne denne XML-en, parse den, separate lenker til sidene du trenger på noen måte som er praktisk for deg (for eksempel ved å analysere URL-en som ble beskrevet i edderkoppmetoden).

Som et resultat får du en liste over lenker for parsing, alt som gjenstår er å gå til dem og analysere innholdet du trenger.

Les mer om sitemap.xml-enheten i wikipedia.

Hva gjør du videre:

Begynn å løse problemer på følgende lenke: oppgaver til leksjonen.

Når alt er bestemt - gå til studiet av et nytt emne.

I forrige artikkel ble generelle begreper knyttet til XML beskrevet. I denne artikkelen vil vi lære hvordan du utfører grunnleggende handlinger knyttet til å endre, legge til, søke i en XML-fil.

XML-fil som brukes for eksempelet.

Mazda 2007 bmw 2009

xml dom

For øyeblikket inneholder filen vår følgende struktur:

Forholdet mellom noder i XML DOM, grunnleggende øyeblikk:

1. Enhver node i DOM-treet har en overordnet ParentNode . I vårt eksempel er garasje overordnet til begge bilelementene, og begge bilelementene er på sin side foreldre til modell- og årselementene.

Hvordan får jeg forelderen til car xml-elementet?

Console.WriteLine(elmRoot["bil"].ParentNode.Name); //Resultat: garasje

2. En forelder kan ha ChildNodes-barn. For eksempel, for en garasjenode, er begge bilelementene barn. Bilelementene har også modell- og årsbarn.

Barnenoder, er en samling som lagrer alle underordnede xml-elementer, for å få tilgang til ønsket element må du spesifisere indeksen. (Indeksen starter alltid fra null!)

For eksempel: hvordan får jeg det første underordnede elementet?

ElmRoot.ChildNodes;

3. Som i det vanlige livet, kan et barn bli født som det første FirstChild, eller det siste LastChild.

Hvis vi tar bilelementet som eksempel, da

FirstChild er modell LastChild er år

4. På sin side er det også sammenhenger mellom barneelementene, de kan være brødre eller søstre, hvis vi trekker paralleller med det virkelige liv.

Et barn kan for eksempel ha en bror Forrige søsken og en neste bror Neste søsken

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Resultat: år Console.WriteLine(elmRoot.ChildNodes. LastChild.PreviousSibling.Name); //Resultat: modell

Hvis elementet ikke blir funnet, blir det kastet et unntak: NullReferenceException, så når du arbeider med xml, bruk alltid try catch-blokker.

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

LastChild er NextSibling;
FirstChild er forrigesøsken;

Ved å bruke metodene beskrevet ovenfor kan du enkelt navigere til ønsket node og få hvilken som helst verdi du trenger.

Hvordan få verdien av et xml-element?

Verdien av xml-elementet kan fås ved å bruke InnerText-egenskapen, for eksempel:

Console.WriteLine(elmRoot["bil"].FirstChild.InnerText); //Resultat: Mazda

En annen måte å få samme verdi av et xml-element:

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

Sekvensen for å bevege seg gjennom DOM-treet:

Garasje -> bil -> modell -> Mazda

Få året:

ElmRoot["bil"].LastChild.InnerText; //Resultat: 2007

Etterfølge:

Garasje -> bil -> årgang -> 2007

Et annet eksempel: 3 måter å få samme resultat på.

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

Hvis du ønsker å få årstall for et element med en verdi på Mazda:

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

For BMW (to måter, få samme resultat)

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

Hvordan endre verdiene til et xml-element?

Bruker eiendommen InnerText() du kan både hente og endre verdien på xml-elementet, for eksempel endre årstall.

//Sett ny verdi elmRoot.FirstChild.LastChild.InnerText = "2010"; //Skriv ut den nye verdien til konsollskjermen Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Resultat: 2010

Samtidig må du huske at alle endringer skjer med den virtuelle xml-filen, hvis du åpner den fysiske filen, vil du se at året 2007 fortsatt er angitt i den.

For at endringene skal tre i kraft, må du bruke Lagre-metoden, for eksempel:

ElmRoot.Save("xml-filnavn eller strøm");

Nå vil informasjonen endres i den "fysiske" xml-filen.

Hvordan få antall underordnede elementer?

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

garasje -> bil inneholder 2 barn: modell og årgang

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

garasje -> bil -> modell inneholder 1 xml underordnet element.

Tilgang til underordnede elementer

etter indeks

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Resultat: bil

Med en løkke

Foreach (XmlNode-nikk i elmRoot.ChildNodes) ( Console.WriteLine(nod.Name); ) //Resultat: bil, bil

Hvordan få navnet på et xml-element?

elmRoot.Name; //Resultat: garasje

Opprette et nytt XML-element

La oss lage et nytt element i XML-dokumentet vårt for å skille det fra de to andre (bil), la oss kalle det en buss.

Når vi oppretter et nytt element, vil vi bruke anbefalingen fra msdn-siden og bruke CreateElement-metoden i stedet for standard nye XmlElement.

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

Opprette og legge til et nytt xml-element

La oss lage et nytt xml-element kalt "BUS".

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //bil, bil XmlElement elmNew = xmlDoc.CreateElement("buss"); almRoot.AppendChild(almNy); Console.WriteLine(elmRoot.ChildNodes.Count); //3 bil, bil, buss xmlDoc.Save("xml filnavn");

Forklaring:

1. Først får vi rotelementet som vi skal feste nye elementer til.

2. Som en test, skriv ut gjeldende antall barn av garasjeelementet: 2 (bil og bil)

3. Lag et nytt BUS-element

4. Bruk av metoden AppendChild legge til et nytt element i treet

5. La oss bruke sjekken igjen og vise gjeldende antall elementer for garasjeelementet, nå er det 3 av dem: bil, bil, buss.

6. For at endringene skal påvirke den fysiske filen, lagrer vi

I selve XML-filen vil det nye elementet se slik ut:

Hvordan legger jeg til et nytt xml-element?

Oppgave: lag et nytt XML-element og legg til litt tekstinnhold i det, for eksempel produksjonsåret.

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

I XML-fil:

2006

For klarhet

Og la oss nå lage en "buss"-node, med samme arkitektur som bil, det vil si, legge til noder: modell, årstall og noe tekstinnhold.

Opprette et XML-element med underordnede elementer

string strFilnavn = @"C:\leksjoner\Auto.xml"; //opprett et nytt xml-dokument i minnet XmlDocument xmlDoc = new XmlDocument(); //last inn xml-filen i minnet xmlDoc.Load(strFilnavn); //Hent rotelementet XmlElement elmRoot = xmlDoc.DocumentElement; //Opprett 3 elementer: buss, modell, år XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("modell"); XmlElement elmYear = xmlDoc.CreateElement("år"); //Angi verdier for elementer: modell, år XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); legg til ellers //Legg til to underordnede elementer til busselementet: modell og år elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmÅr); //Legg til verdier til modell- og årsnodene elmModel.InnerText = "liaz"; elmYear.AppendChild(year_txt); //Legg til en ny xml-elementbuss til treet elmRoot.AppendChild(elmBUS); //Sjekk om alt er lagt til på riktig måte Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Hvis alt er i orden, bruk deretter Lagre-metoden xmlDoc.Save("xml filnavn");

Resultat:

liaz 2006

Hvordan kan du forkorte denne koden? For eksempel, som følger:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = nytt XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("buss"); XmlElement elmModel = xmlDoc.CreateElement("modell"); XmlElement elmYear = xmlDoc.CreateElement("år"); //Legg til verdier til modell- og årsnodene elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmÅr); elmRoot.AppendChild(elmBUS); //Hvis alt er riktig, kall deretter Lagre-metoden xmlDoc.Save("xml filnavn");

La oss forkorte koden litt mer, for dette vil vi bruke InnerXml-egenskapen:

XmlDocument xmlDoc = nytt XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("buss"); string txt=" liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (vil være lik garage) er en annen måte å få tilgang til rotelementet på, samme som XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild( elmXML) ;xmlDoc.Save(PathXmlFile);

Resultat

Få en liste over elementer med GetElementByTagName

GetElementByTagName returnerer XmlNodeList, som inneholder alle etterkommerelementer som tilhører det spesifiserte elementet, for eksempel må vi få alle bilmodeller som er lagret i garasjen:

XmlDocument xmlDoc = nytt XmlDocument(); xmlDoc.Load(strFilnavn); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modell"); foreach (XmlNode-node i modellnavn) ( Console.WriteLine(node.InnerText); ) //Resultat: mazda, bmw, liaz

Refererer med en indeks:

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

Hvordan kan jeg endre tekstinnholdet i det nyopprettede "buss"-elementet ved å bruke GetElementByTagName-metoden?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = nytt XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("modell"); Console.WriteLine(modelName.InnerText); //Få verdi: liaz

Eller du kan endre navnet liaz til Ikarus

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

Hva annet å lese