Parsování XML souboru v .NET

Giovanna

Parsování XML souboru v .NET
« kdy: 26. 03. 2015, 00:06:27 »
Dobry den,

mam soubor xml, který by se dal prirovnat asi k následujícímu:

Kód: [Vybrat]
<DokumentRoot>   
   <Trida Nazev="1A">
      <Student Pohlavi="Zak" Jmeno="Petr Zach" Profesor="Jiri Mach"/>
      <Student Pohlavi="Zakyne" Jmeno="Anna Cechova" Profesor="Marie Sebestova"/>
      ....
      ....
   </Trida>

   <Trida Nazev="8B">
      <Student Pohlavi ............. />
      ....
      ....
   </Trida>
</DokumentRoot>

Premyslel jsem, jaky vhodny způsob zvolit k vyparsovani celého souboru do pametovych struktur, ale narazil jsem na nedostatek zkusenosti. Když to stejne cele musim projit, je chybou pouzit XmlReader? Nemusite za me psat kod, ale zkousel jsem pro ladeni a testovani:

Kód: [Vybrat]
using (XmlReader reader = XmlReader.Create("Skola.xml"))
{
reader.ReadStartElement("DokumentRoot");

while ( reader.Read() )
{
if (reader.IsStartElement())
{
if (reader.Name == "Trida")
{
Console.WriteLine(reader.Name + ": " + reader["Nazev"]);

}
}
}

Console.ReadLine();
}

Co teda ale nevim, chybi mi tu objektovy pristup. Mozna bych mohl pridavat studenty do kolekce nez narazim na další element Trida, ale dela se to tak, nevite?
« Poslední změna: 26. 03. 2015, 08:08:25 od Petr Krčmář »


Kolemjdoucí

Re:.NET XML - parsování souboru s jasnou strukturou
« Odpověď #1 kdy: 26. 03. 2015, 00:34:23 »
Parsování XML je dávno hotovo a dělá se to nějak takhle: http://www.doublecloud.org/2013/08/parsing-xml-in-c-a-quick-working-sample/
Objektový přístup na parsování XML tak nějak není potřeba.

Giovanna

Re:.NET XML - parsování souboru s jasnou strukturou
« Odpověď #2 kdy: 26. 03. 2015, 02:09:16 »
Tohle uz chápu, poradite mi ještě, jak zmenit například jmeno profesora, jak k tomu pristoupit? Samozrejme uz ted diky.

pupi1

Re:.NET XML - parsování souboru s jasnou strukturou
« Odpověď #3 kdy: 26. 03. 2015, 07:44:55 »
tak mozes vyuzit linq to xml, ktory ti ulahci pracu. alebo to mozes spravit tak, ze si spravis objekt, ktory ale musi sediet s danym a XML  nasledne zdeserializujes. dostanes objekt naplneny datami xml. potom uz mozes zmenit co chces.

mon

Re:.NET XML - parsování souboru s jasnou strukturou
« Odpověď #4 kdy: 26. 03. 2015, 07:55:17 »
XmlReader sa pouziva len pre velke subory alebo ked chces nieco velmi rychlo precitat.

Este by som ti dal do pozornosti Linq to XML. Lahsie sa to pise (http://www.codeproject.com/Articles/42336/An-Introduction-to-LINQ-to-XML), je to rychlejsie a menej pamatovo narocne (http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/02/some-hard-numbers-about-xmldocument.html) a navyse sa da napojit pre priebezne spracovanie na XmlReader (http://james.newtonking.com/archive/2007/12/11/linq-to-xml-over-large-documents)

Ak chces stal pouzivat xmlreader tak pouzivaj aj hladanie ukoncovacieho tagu, pri otvaracom zacnes citat zoznam studentov pri ukoncovacom skoncis.

Cez xmlreader nespravis zmeny, ale mozes si sam vyskladat xml pocas prechadzania povodneho xml.