Как прочитать 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"));
}
}