Čtení XML formátu v jazyce C#

V tomto příspěvku si ukážeme, jak snadné je v jazyce C# za pomocí .NETu číst XML formát.

Pro čtení XML formátu použím 2 možnosti. Buďto pomocí XmlTextReader třídy, která dostačuje pro čtení jednoduchých XML struktur, nebo pomocí čtení uzlů, které umožňuje mnohem více operací než samotný XmlTextReader. Pro vyzkoušení použiji ukázkový XML soubor k nalezení na wikipedii zde.

Xml soubor vypadá následovně:


<?xml version="1.0" encoding="UTF-8"?>
<!-- Poznamka je nutné přidat více receptů. -->
<recept jméno="chleba" čas_přípravy="5 minut" čas_vaření="3 hodiny">
  <titulek>Jednoduchý chleba</titulek>
<přísada množství="3" jednotka="šálky">Mouka</přísada>
<přísada množství="0,25" jednotka="unce">Kvasnice</přísada>
<přísada množství="1,5" jednotka="šálku">Horká voda</přísada>
<přísada množství="1" jednotka="kávová lžička">Sůl</přísada>
  <instrukce>
    <krok>Smíchejte všechny přísady dohromady a dobře prohněťte.</krok>
    <krok>Zakryjte tkaninou a nechejte hodinu v teplé místnosti.</krok>
    <krok>Znovu prohněťte, umístěte na plech a pečte v troubě.</krok>
  </instrukce>
</recept>

Pro používání XML knihoven musí být v projektu přidána reference: System.Xml

Samotný kód je velmi jednoduchý a funguje tak, že nejprve vytvoříme a inicializujeme XmlDocument. Poté načteme pomocí metody Load() zdrojový XML soubor. Zavináč před řetězcem znamená, že obsah řetězce bude automaticky escapován (nemusíme tedy dvojit zpětná lomítka).

Dále pak inicializujeme element (tedy dáme impuls k parsování dokumentu na jednotlivé elementy). Nyní již zbývá jen definovat počáteční uzel (formou Xpath) a tyto uzly již může dále procházet, číst a zanořovat se do případných potomků.

Celý kód vypadá následovně:


using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace xmltest
{
	class Program
	{
		static void Main(string[] args)
		{
			XmlDocument xml = new XmlDocument();
			xml.Load(@"C:test.xml");

			XmlElement root = xml.DocumentElement;
			XmlNodeList recepts = root.SelectNodes("/recept");

			foreach (XmlNode recept in recepts)
			{
				foreach (XmlNode tags in recept)
				{
					switch (tags.Name)
					{
						case "titulek":
							Console.WriteLine("Titulek: " + tags.InnerText);
							break;
						case "přísada":
							Console.WriteLine("tPřísada: "+ tags.InnerText);

							if (tags.Attributes.Count > 0) // obsahuje přísada atributy?
							{
								foreach (XmlAttribute attr in tags.Attributes)
								{
									Console.WriteLine("tt" + attr.Name + ": " + attr.Value);
								}
							}
							break;
						case "instrukce":
							Console.WriteLine("Instrukce přípravy: ");
							if (tags.HasChildNodes) // obsahuje uzel instrukce děti?
							{
								int i = 1;
								foreach (XmlNode krok in tags)
								{
									Console.WriteLine("t" + (i++) + ". " + krok.InnerText);
								}
							}
							break;
					}
				}
			}
		}
	}
}

Výstup pak vypadá následovně:

Výstup XML readeru

Výstup XML readeru

80 Responses to Čtení XML formátu v jazyce C#

  1. Pingback: BRETT

  2. Pingback: JASON

  3. Pingback: JOEL

  4. Pingback: JERRY

  5. Pingback: MARION

  6. Pingback: BRYAN

  7. Pingback: GLENN

  8. Pingback: DALE

  9. Pingback: EVAN

  10. Pingback: VINCENT

  11. Pingback: VERNON

  12. Pingback: NICHOLAS

  13. Pingback: LOUIS

  14. Pingback: DWIGHT

  15. Pingback: RICARDO

  16. Pingback: ZACHARY

  17. Pingback: FRED

  18. Pingback: MILTON

  19. Pingback: NICK

  20. Pingback: MARION

  21. Pingback: ALEXANDER

  22. Pingback: ENRIQUE

  23. Pingback: FREDRICK

  24. Pingback: ANGELO

  25. Pingback: JOSE

  26. Pingback: HUBERT

  27. Pingback: MAX

  28. Pingback: BRYAN

  29. Pingback: RAFAEL

  30. Pingback: TYLER

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam protection by WP Captcha-Free