XML olvasása C#-ban

Xml Olvasasa C Ban



Az internetes adatmegosztás elterjedt adatformátuma az XML, mivel ebben rugalmasan és felhasználóbarát módon lehet adatokat tárolni és a rendszerek között cserélni. A C# nyelven az XML fájlok olvasása gyakori feladat, a .NET keretrendszer pedig különféle osztályokat és módszereket biztosít az XML fájlok elemzéséhez és olvasásához. Ez a bejegyzés a.NET keretrendszer használatával foglalkozik az XML olvasásához C#-ban.

XML olvasása C#-ban

Számos módja van az XML-fájlok C#-ban történő olvasásának, és mindegyik módszernek megvannak a maga előnyei és hátrányai, és a választás a projekt követelményeitől függ. Az alábbiakban bemutatunk néhány módszert az XML-fájlok C#-ban történő olvasására:

Íme annak az XML-fájlnak a tartalma, amelyet létrehoztam, és amelyet a következő módszerek bemutatására fogok használni:







< ?xml változat = '1.0' kódolás = 'utf-8' ? >
< alkalmazottak >
< munkavállaló >
< id > 1 id >
< név > Sam bosh név >
< osztály > Marketing osztály >
< fizetés > 50000 fizetés >
munkavállaló >
< munkavállaló >
< id > 2 id >
< név > Jane Doe név >
< osztály > Pénzügy osztály >
< fizetés > 60 000 fizetés >
munkavállaló >
< munkavállaló >
< id > 3 id >
< név > James név >
< osztály > Emberi Erőforrások osztály >
< fizetés > 70 000 fizetés >
munkavállaló >
alkalmazottak >

1: XmlDocument használata

XML-fájl C# nyelven történő olvasásához használhatja az XmlDocument osztályt vagy az XDocument osztályt, amelyek mindkettő a System.Xml névtér részét képezi. Az XmlDocument osztály DOM (Document Object Model) megközelítést biztosít az XML olvasásához, míg az XDocument osztály LINQ (Language-Integrated Query) megközelítést biztosít. Íme egy példa az XmlDocument osztály használatára egy XML fájl olvasásához:



Rendszer használata;
a System.Xml használatával;

osztály Programja
{
statikus üresség Fő ( húr [ ] args )
{
XmlDocument doc = új XmlDocument ( ) ;
dok.Betöltés ( 'alkalmazottak.xml' ) ;

XmlNodeList nodes = doc.DocumentElement.SelectNodes ( '/alkalmazottak/alkalmazott' ) ;

az egyes ( XmlNode csomópont ban ben csomópontok )
{
húr id = csomópont.SelectSingleNode ( 'azonosító' ) .InnerText;
string name = csomópont.SelectSingleNode ( 'név' ) .InnerText;
string osztály = csomópont.SelectSingleNode ( 'osztály' ) .InnerText;
string fizetés = csomópont.SelectSingleNode ( 'fizetés' ) .InnerText;
Console.WriteLine ( 'Azonosító: {0}, Név: {1}, Osztály: {2}, Fizetés: {3}' , id , név, osztály, fizetés ) ;
}
}
}

Ez a kód az XmlDocument osztályt használja az XML-fájl betöltéséhez, a SelectNodes metódust pedig az alkalmazotti csomópontok listájának lekéréséhez. Ezután minden alkalmazotti csomópontnál a SelectSingleNode metódus segítségével lekéri az azonosító, név, osztály és fizetés gyermekcsomópontok értékeit, és megjeleníti azokat a Console segítségével.WriteLine:







2: Az XDocument használata

Alternatív megoldásként az XDocument osztályt is használhatja XML-fájlok olvasásához LINQ-megközelítéssel, és az alábbiakban a kód bemutatja, hogyan kell ezt megtenni:

Rendszer használata;

osztály Programja
{
statikus üres Fő ( húr [ ] args )
{
XDocument doc = XDocument.Load ( 'alkalmazottak.xml' ) ;

az egyes ( XElement elem ban ben dok.Leszármazottak ( 'munkavállaló' ) )
{
int id = int.Elemzés ( elem.Elem ( 'azonosító' ) .Érték ) ;
string name = elem.Elem ( 'név' ) .Érték;
string osztály = elem.Elem ( 'osztály' ) .Érték;
int fizetés = int.Elemzés ( elem.Elem ( 'fizetés' ) .Érték ) ;
Console.WriteLine ( $ 'ID: {id}, Név: {name}, Osztály: {részleg}, Fizetés: {fizetés}' ) ;
}
}
}

Az XML fájl az XDocument.Load metódussal töltődik be egy XDocument objektumba. Az XML-fájl „alkalmazotti” elemei ezután a Descendants technikával kerülnek lekérésre. Az egyes elemek gyermekelemei az Elem metódussal érhetők el, és értékeik a Value tulajdonság segítségével kerülnek kibontásra. Végül a kinyert adatok kinyomtatásra kerülnek a konzolra.



Vegye figyelembe, hogy az XDocument a System.Xml.Linq névtérhez tartozik, ezért a következő utasítást kell tartalmaznia a C# fájl tetején.

3: Az XmlReader használata

Az XmlReader egy gyors és hatékony módja az XML-fájlok C#-ban történő olvasásának. A fájlt szekvenciálisan olvassa be, ami azt jelenti, hogy egyszerre csak egy csomópontot tölt be, így ideális olyan nagy XML-fájlok kezelésére, amelyeket egyébként nehéz lenne a memóriában kezelni.

Rendszer használata;
a System.Xml használatával;

osztály Programja
{
statikus üresség Fő ( húr [ ] args )
{
segítségével ( XmlReader olvasó = XmlReader.Create ( 'alkalmazottak.xml' ) )
{
míg ( olvasó.Olvasd ( ) )
{
ha ( reader.NodeType == XmlNodeType.Element && olvasó.Név == 'munkavállaló' )
{
Console.WriteLine ( 'azonosító:' + olvasó.GetAttribute ( 'azonosító' ) ) ;
olvasó.ReadToDescendant ( 'név' ) ;
Console.WriteLine ( 'Név:' + olvasó.ReadElementContentAsString ( ) ) ;
olvasó.ReadToNextTestvér ( 'osztály' ) ;
Console.WriteLine ( 'Osztály:' + olvasó.ReadElementContentAsString ( ) ) ;
olvasó.ReadToNextTestvér ( 'fizetés' ) ;
Console.WriteLine ( 'Fizetés: ' + olvasó.ReadElementContentAsString ( ) ) ;
}
}
}
}
}

Ebben a példában az XmlReader.Create metódust használjuk az XmlReader példányának létrehozásához, és paraméterként adjuk át az XML fájl elérési útját. Ezután egy while ciklust használunk az XML-fájl csomópontonkénti átolvasására az XmlReader Read metódusával.

A cikluson belül először ellenőrizzük, hogy az aktuális csomópont alkalmazott elem-e az XmlReader NodeType és Name tulajdonságaival. Ha igen, akkor a GetAttribute metódust használjuk az id attribútum értékének lekérésére.

Ezután a ReadToDescendant metódussal mozgatjuk az olvasót az alkalmazotti elemen belüli név elemre. A név elem értékét ezután a ReadElementContentAsString függvény használatával kapjuk meg.

Hasonlóképpen a ReadToNextSibling metódust használjuk, hogy az olvasót a következő testvér elemre helyezzük, és megkapjuk az osztály és a fizetési elemek értékét.

Végül a blokk használatával biztosítjuk, hogy az XmlReader objektumot megfelelően selejtezze, miután befejeztük az XML fájl beolvasását:

4: XML-ből LINQ-ba

Az XML-fájlok LINQ-ból XML-be olvasása C#-ban hatékony módja az XML-adatok elérésének és kezelésének. A LINQ to XML a LINQ technológia egyik összetevője, amely egyszerű és hatékony API-t biztosít az XML adatok kezeléséhez.

Rendszer használata;
a System.Linq;
a System.Xml.Linq használatával;

osztály Programja
{
statikus üresség Fő ( húr [ ] args )
{
XDocument doc = XDocument.Load ( 'alkalmazottak.xml' ) ;

var alkalmazottak = e ban ben dok.Leszármazottak ( 'munkavállaló' )
válassza ki új
{
Id = e.Element ( 'azonosító' ) .Érték,
Név = e.Elem ( 'név' ) .Érték,
Osztály = e.Elem ( 'osztály' ) .Érték,
Fizetés = e.Elem ( 'fizetés' ) .Érték
} ;
az egyes ( var alkalmazott ban ben alkalmazottak )
{
Console.WriteLine ( $ 'Id: {alkalmazott.Id}, Név: {alkalmazott.Név}, Osztály: {alkalmazott.Osztály}, Fizetés: {alkalmazott.Bér}' ) ;
}
}
}

Ebben a kódban először az XML fájlt töltjük be az XDocument.Load() metódussal. Ezután a LINQ to XML segítségével lekérdezzük az XML-adatokat, és kiválasztjuk az azonosítót, a nevet, a részleget és a fizetési elemeket minden alkalmazott elemhez. Ezeket az adatokat anonim formában tároljuk, majd az eredményeket végigfutva kinyomtatjuk az alkalmazotti információkat a konzolra.

5: XPath használata

Az XPath egy lekérdezési nyelv, amely az XML-dokumentumokban való navigálásra szolgál bizonyos elemek, attribútumok és csomópontok megkeresésére. Hatékony eszköz az információkereséshez és -szűréshez XML dokumentumokban. A C#-ban az XPath nyelvet használhatjuk XML-fájlok olvasására és kivonására.

Rendszer használata;
a System.Xml.XPath használatával;
a System.Xml használatával;

osztály Programja
{
statikus üresség Fő ( húr [ ] args )
{
XmlDocument doc = új XmlDocument ( ) ;
dok.Betöltés ( 'alkalmazottak.xml' ) ;

// Hozzon létre egy XPathNavigátort a dokumentumból
XPathNavigator nav = doc.CreateNavigator ( ) ;

// Fordítsa le az XPath kifejezést
XPathExpression expr = nav.Compile ( '/alkalmazottak/alkalmazott/név' ) ;

// Értékelje a kifejezést, és iterálja végig az eredményeket
XPathNodeIterator iterator = nav.Select ( expr ) ;
míg ( iterátor.MoveNext ( ) )
{
Console.WriteLine ( iterator.Current.Value ) ;
}
}
}

Ez a kód betölti az „employees.xml” fájlt egy XmlDocument segítségével, létrehoz egy XPathNavigátort a dokumentumból, és összeállít egy XPath kifejezést, hogy kijelölje az elemek alatti összes elemet. Ezután kiértékeli a kifejezést, és végigfut az eredményeken, kiírva minden elem értékét.

Jegyzet: Az XPath használata hatékony és rugalmas módja lehet az elemek és attribútumok kiválasztásának egy XML-dokumentumból, de összetettebb is lehet, mint az általunk tárgyalt egyéb módszerek.

Következtetés

Az XmlDocument osztály használata teljes DOM-kezelési képességet biztosít, de lassabb és memóriaigényesebb lehet, mint a többi módszer. Az XmlReader osztály jó lehetőség nagy XML-fájlok olvasásához, mivel gyors, csak előre mutató és nem gyorsítótárazott adatfolyam-alapú megközelítést biztosít. Az XDocument osztály egyszerűbb és tömörebb szintaxist biztosít, de előfordulhat, hogy nem olyan hatékony, mint az XmlReader. Ezen túlmenően a LINQ to XML és XPath metódusok hatékony lekérdezési lehetőségeket biztosítanak az XML-fájlokból történő konkrét adatok kinyeréséhez.