Kā lasīt XML C#

Ka Lasit Xml C



Plaši izmantotais datu formāts interneta datu koplietošanai ir XML, jo tajā datus var glabāt un apmainīties starp sistēmām elastīgā un lietotājam draudzīgā veidā. C# valodā XML failu lasīšana ir izplatīts uzdevums, un .NET ietvars nodrošina dažādas klases un metodes XML failu parsēšanai un lasīšanai. Šajā ziņojumā tiks izmantots .NET ietvars, lai lasītu XML C#.

XML lasīšana C#

Ir vairāki veidi, kā lasīt XML failu C#, un katrai metodei ir savas priekšrocības un trūkumi, un izvēle ir atkarīga no projekta prasībām. Tālāk ir norādīti daži veidi, kā lasīt XML failu C#:

Šeit ir XML faila saturs, ko esmu izveidojis un izmantošu, lai demonstrētu nākamās metodes:







< ?xml versija = '1.0' kodējums = 'utf-8' ? >
< darbiniekiem >
< darbinieks >
< id > 1 id >
< nosaukums > Sems Bošs nosaukums >
< nodaļa > Mārketings nodaļa >
< algu > 50 000 algu >
darbinieks >
< darbinieks >
< id > 2 id >
< nosaukums > Džeina Do nosaukums >
< nodaļa > Finanses nodaļa >
< algu > 60 000 algu >
darbinieks >
< darbinieks >
< id > 3 id >
< nosaukums > Džeimss nosaukums >
< nodaļa > Cilvēku resursi nodaļa >
< algu > 70 000 algu >
darbinieks >
darbiniekiem >

1: izmantojot XmlDocument

Lai lasītu XML failu C#, varat izmantot klasi XmlDocument vai XDocument, kuras abas ir System.Xml nosaukumvietas daļa. XmlDocument klase nodrošina DOM (dokumenta objektu modeļa) pieeju XML lasīšanai, savukārt XDocument klase nodrošina LINQ (valodu integrētā vaicājuma) pieeju. Šeit ir piemērs, kas izmanto XmlDocument klasi, lai lasītu XML failu:



izmantojot sistēmu;
izmantojot System.Xml;

klases programma
{
statiskā tukšums Galvenā ( virkne [ ] args )
{
XmlDocument doc = jauns XmlDocument ( ) ;
doc.Ielādēt ( 'darbinieki.xml' ) ;

XmlNodeList mezgli = doc.DocumentElement.SelectNodes ( '/darbinieki/darbinieks' ) ;

katram ( XmlNode mezgls iekšā mezgli )
{
virkne id = node.SelectSingleNode ( 'id' ) .InnerText;
virknes nosaukums = mezgls.SelectSingleNode ( 'vārds' ) .InnerText;
virknes nodaļa = node.SelectSingleNode ( 'nodaļa' ) .InnerText;
virkne alga = mezgls.SelectSingleNode ( 'alga' ) .InnerText;
Console.WriteLine ( 'ID: {0}, vārds: {1}, nodaļa: {2}, alga: {3}' , id , nosaukums, nodaļa, alga ) ;
}
}
}

Šis kods izmanto XmlDocument klasi, lai ielādētu XML failu, un SelectNodes metodi, lai izgūtu darbinieku mezglu sarakstu. Pēc tam katram darbinieka mezglam tas izmanto SelectSingleNode metodi, lai izgūtu id, vārda, nodaļas un algas pakārtotā mezgla vērtības un parādītu tās, izmantojot Console.WriteLine:







2: XDocument izmantošana

Varat arī izmantot XDocument klasi, lai lasītu XML failu, izmantojot LINQ pieeju, un tālāk ir kods, kas ilustrē, kā to izdarīt:

izmantojot sistēmu;

klases programma
{
statiskā tukšums Galvenā ( virkne [ ] args )
{
XDocument doc = XDocument.Load ( 'darbinieki.xml' ) ;

katram ( XElement elements iekšā doc.Pēcteči ( 'darbinieks' ) )
{
starpt id = int.Parsēt ( elements.Elements ( 'id' ) .Vērtība ) ;
virknes nosaukums = elements.Element ( 'vārds' ) .Vērtība;
stīgu nodaļa = elements.Elements ( 'nodaļa' ) .Vērtība;
int alga = int.Parse ( elements.Elements ( 'alga' ) .Vērtība ) ;
Console.WriteLine ( $ 'ID: {id}, vārds: {name}, nodaļa: {department}, alga: {alga}' ) ;
}
}
}

XML fails tiek ielādēts XDocument objektā, izmantojot metodi XDocument.Load. Pēc tam visi XML faila “darbinieka” elementi tiek izgūti, izmantojot paņēmienu Descendants. Katra elementa pakārtotajiem elementiem tiek piekļūts, izmantojot metodi Elements, un to vērtības tiek iegūtas, izmantojot rekvizītu Value. Visbeidzot, iegūtie dati tiek izdrukāti konsolē.



Ņemiet vērā, ka XDocument pieder System.Xml.Linq nosaukumvietai, tāpēc C# faila augšdaļā ir jāiekļauj tālāk norādītais.

3: XmlReader izmantošana

XmlReader ir ātrs un efektīvs veids, kā lasīt XML failu C#. Tas nolasa failu secīgi, kas nozīmē, ka vienlaikus tiek ielādēts tikai viens mezgls, padarot to ideāli piemērotu darbam ar lieliem XML failiem, kurus citādi būtu grūti apstrādāt atmiņā.

izmantojot sistēmu;
izmantojot System.Xml;

klases programma
{
statiskā tukšums Galvenā ( virkne [ ] args )
{
izmantojot ( XmlReader lasītājs = XmlReader.Create ( 'darbinieki.xml' ) )
{
kamēr ( lasītājs.Lasi ( ) )
{
ja ( lasītājs.NodeType == XmlNodeType.Element && lasītājs.Vārds == 'darbinieks' )
{
Console.WriteLine ( 'ID:' + lasītājs.GetAttribute ( 'id' ) ) ;
lasītājs.ReadToDescendant ( 'vārds' ) ;
Console.WriteLine ( 'Vārds:' + lasītājs.ReadElementContentAsString ( ) ) ;
lasītājs.LasītNākamajamMāsai ( 'nodaļa' ) ;
Console.WriteLine ( 'Nodaļa: ' + lasītājs.ReadElementContentAsString ( ) ) ;
lasītājs.LasītNākamajamMāsai ( 'alga' ) ;
Console.WriteLine ( 'Alga:' + lasītājs.ReadElementContentAsString ( ) ) ;
}
}
}
}
}

Šajā piemērā mēs izmantojam XmlReader.Izveidojiet metodi, lai izveidotu XmlReader gadījumu un kā parametru nodotu XML faila ceļu. Pēc tam mēs izmantojam kamēr cilpu, lai izlasītu XML faila mezglu pēc mezgla, izmantojot XmlReader lasīšanas metodi.

Cilpas iekšpusē mēs vispirms pārbaudām, vai pašreizējais mezgls ir darbinieka elements, izmantojot XmlReader rekvizītus NodeType un Name. Ja tā, mēs izmantojam metodi GetAttribute, lai izgūtu id atribūta vērtību.

Tālāk mēs izmantojam metodi ReadToDescendant, lai pārvietotu lasītāju uz vārda elementu darbinieka elementā. Pēc tam nosaukuma elementa vērtību iegūst, izmantojot funkciju ReadElementContentAsString.

Tāpat mēs izmantojam metodi ReadToNextSibling, lai pārvietotu lasītāju uz nākamo brāļa elementu un iegūtu nodaļas un algas elementu vērtību.

Visbeidzot, mēs izmantojam bloku, lai nodrošinātu, ka XmlReader objekts tiek pareizi iznīcināts pēc XML faila lasīšanas:

4: XML uz LINQ

XML faila lasīšana, izmantojot LINQ uz XML C#, ir spēcīgs veids, kā piekļūt XML datiem un ar tiem manipulēt. LINQ to XML ir LINQ tehnoloģijas sastāvdaļa, kas nodrošina vienkāršu un efektīvu API darbam ar XML datiem.

izmantojot sistēmu;
izmantojot System.Linq;
izmantojot System.Xml.Linq;

klases programma
{
statiskā tukšums Galvenā ( virkne [ ] args )
{
XDocument doc = XDocument.Load ( 'darbinieki.xml' ) ;

var darbinieki = no e iekšā doc.Pēcteči ( 'darbinieks' )
izvēlieties jauns
{
Id = e.Element ( 'id' ) .Vērtība,
Nosaukums = e.Elements ( 'vārds' ) .Vērtība,
Nodaļa = e.Element ( 'nodaļa' ) .Vērtība,
Alga = e.Elements ( 'alga' ) .Vērtība
} ;
katram ( var darbinieks iekšā darbiniekiem )
{
Console.WriteLine ( $ 'Id: {darbinieks.Id}, vārds: {darbinieks.Vārds}, nodaļa: {darbinieks.nodaļa}, alga: {darbinieks.alga}' ) ;
}
}
}

Šajā kodā mēs vispirms ielādējam XML failu, izmantojot XDocument.Load() metodi. Pēc tam mēs izmantojam LINQ uz XML, lai pieprasītu XML datus un atlasītu ID, nosaukumu, nodaļu un algas elementus katram darbinieka elementam. Mēs uzglabājam šos datus anonīmā veidā un pēc tam pārskatām rezultātus, lai drukātu darbinieku informāciju konsolē.

5: XPath izmantošana

XPath ir vaicājumu valoda, ko izmanto, lai pārvietotos pa XML dokumentu, lai atrastu konkrētus elementus, atribūtus un mezglus. Tas ir efektīvs līdzeklis informācijas meklēšanai un filtrēšanai XML dokumentā. C# mēs varam izmantot XPath valodu, lai lasītu un izvilktu datus no XML failiem.

izmantojot sistēmu;
izmantojot System.Xml.XPath;
izmantojot System.Xml;

klases programma
{
statisks tukšums Galvenais ( stīga [ ] args )
{
XmlDocument doc = jauns XmlDocument ( ) ;
doc.Ielādēt ( 'darbinieki.xml' ) ;

// Izveidojiet XPathNavigator no dokumenta
XPathNavigator nav = doc.CreateNavigator ( ) ;

// Kompilējiet XPath izteiksmi
XPathExpression ekspr = nav.Kompilēt ( '/darbinieki/darbinieks/vārds' ) ;

// Novērtējiet izteiksmi un atkārtojiet rezultātus
XPathNodeIterator iterator = nav.Atlasiet ( ekspr ) ;
kamēr ( iterator.MoveNext ( ) )
{
Console.WriteLine ( iterators.Strāva.Vērtība ) ;
}
}
}

Šis kods ielādē failu “employees.xml”, izmantojot XmlDocument, no dokumenta izveido XPathNavigator un apkopo XPath izteiksmi, lai atlasītu visus elementus zem elementiem. Pēc tam tas novērtē izteiksmi un atkārto rezultātus, izdrukājot katra elementa vērtību.

Piezīme: XPath izmantošana var būt spēcīgs un elastīgs veids, kā atlasīt elementus un atribūtus no XML dokumenta, taču tas var būt arī sarežģītāks nekā dažas citas metodes, par kurām mēs runājām.

Secinājums

Klases XmlDocument izmantošana nodrošina visas DOM manipulācijas iespējas, taču tā var būt lēnāka un ietilpīgāka nekā citas metodes. XmlReader klase ir laba iespēja lielu XML failu lasīšanai, jo tā nodrošina ātru, tikai uz priekšu un bez kešatmiņas straumēm balstītu pieeju. XDocument klase nodrošina vienkāršāku un kodolīgāku sintaksi, taču tā var nebūt tik efektīva kā XmlReader. Turklāt LINQ uz XML un XPath metodes nodrošina jaudīgas vaicāšanas iespējas, lai no XML faila iegūtu konkrētus datus.