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

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

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

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

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

textual
Листинг программы
string xml = Resources.file;
 
XDocument doc = XDocument.Parse(xml); 
 
foreach (var block in doc.Root.Elements("block"))
{
    Debug.WriteLine((string)block.Attribute("number"));
 
    foreach (var page in block.Descendants("page"))
    {
        Debug.WriteLine(
            "{0} {1} {2} {3} {4} {5}",
            (string)page.Attribute("number"),
            (string)page.Attribute("number"),
            (string)page.Attribute("format"),
            (string)page.Element("area").Element("area"),
            (string)page.Element("area").Element("unit"),
            (string)page.Element("category"));
    }
}

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы