Как прочитать XML документ с тэгами и атрибутами подобного рода - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Имеется документ XML вида:
Листинг программы
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <blocks>
  3. <block number"123">
  4. <pages>
  5. <page number="1" format="2">
  6. <area>
  7. <area>1769</area>
  8. <unit>055</unit>
  9. </area>
  10. <category>003002000000</category>
  11. </page>
  12. <page number="2" format="3">
  13. <area>
  14. <area>1222</area>
  15. <unit>053</unit>
  16. </area>
  17. <category>003002000000</category>
  18. </page>
  19. <page number="3" format="4">
  20. <area>
  21. <area>1231</area>
  22. <unit>054</unit>
  23. </area>
  24. <category>003002000000</category>
  25. </page>
  26. </pages>
  27. <block>
  28. </blocks>
Как спарсить все значения и между тэгами, и то, что в атрибутах? Удается пока только спарсить то, что между тэгами из-за большой вложенности тэгов
Листинг программы
  1. void LoadXML()
  2. {
  3. XmlDocument xDoc = new XmlDocument();
  4. xDoc.Load("doc.xml");
  5. XmlElement xRoot = xDoc.DocumentElement;
  6. XmlNodeList childnodes = xRoot.SelectNodes("blocks");
  7. foreach (XmlNode xnode in xRoot)
  8. {
  9. foreach (XmlNode childnode in xnode.ChildNodes)
  10. {
  11. if (childnode.Name == "block")
  12. {
  13. richTextBox1.Text += childnode.InnerText;
  14. }
  15. }
  16. }
  17. }
На выходе необходимо, чтобы было что-то вроде:
123 1 2 1769 055 00300200000 2 3 1222 053 00300200000 3 4 1231 054 00300200000

Решение задачи: «Как прочитать XML документ с тэгами и атрибутами подобного рода»

textual
Листинг программы
  1. string xml = Resources.file;
  2.  
  3. XDocument doc = XDocument.Parse(xml);
  4.  
  5. foreach (var block in doc.Root.Elements("block"))
  6. {
  7.     Debug.WriteLine((string)block.Attribute("number"));
  8.  
  9.     foreach (var page in block.Descendants("page"))
  10.     {
  11.         Debug.WriteLine(
  12.             "{0} {1} {2} {3} {4} {5}",
  13.             (string)page.Attribute("number"),
  14.             (string)page.Attribute("number"),
  15.             (string)page.Attribute("format"),
  16.             (string)page.Element("area").Element("area"),
  17.             (string)page.Element("area").Element("unit"),
  18.             (string)page.Element("category"));
  19.     }
  20. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы