Чтение XML файла - C# (203222)

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

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

Добрый вечер. Даю сразу исходники:
<?xml version="1.0" encoding="utf-8"?>
<head>
  <object number="1">
    <name>Vasya</name>
    <Surname>Popov</Surname>
  </object>
  <object number="2">
    <file>doc</file>
    <picture>blue</picture>
  </object>
</head>
и код:
 XmlDocument document = new XmlDocument();
 
            //Загружаем наш файл:
            document.Load(pathToXml);
 
            String[][,] subElement = new String[2][,];
            foreach (XmlNode obj in document.DocumentElement.ChildNodes)
            {
                int x = 2;
                int j = 0;
                NumberOfObject = Convert.ToInt32(obj.Attributes.GetNamedItem("number").Value) - 1;
 
                subElement[NumberOfObject] = new String[x+1, 2];
                subElement[NumberOfObject][0, 0] = "КАК СЧИТАТЬ САМ ТЕГ, ТО ЕСТЬ ПОЛУЧИТЬ :OBJECT?? ";
 
                foreach (XmlNode element in obj.ChildNodes)
                {
                    subElement[NumberOfObject][j + 1, 0] = "КАК СЧИТАТЬ САМ ТЕГ";
                    subElement[NumberOfObject][j + 1, 1] = element.InnerText; //СЧИТАЛ ЗНАЧЕНИЕ
                    j++;
                }
            }
Вопрос вот в чем. Мне необходимо считать не значение (<name>Vasya</name>), а сам тег, то есть получить строку "name". Благодарю за помощь.

Решение задачи: «Чтение XML файла»

textual
Листинг программы
using System;
using System.IO;
using System.Linq;
using System.Xml.Linq;
 
namespace ConsoleApplication143
{
    class Program
    {
        private static void Main()
        {
            string s = @"<?xml version=""1.0"" encoding=""utf-8""?>
<head>
  <object number=""1"">
    <name>Vasya</name>
    <Surname>Popov</Surname>
  </object>
  <object number=""2"">
    <file>doc</file>
    <picture>blue</picture>
  </object>
</head>";
            var xml = XDocument.Load(new StringReader(s));
            var enumerable = xml.Descendants("object")
                                .Select(
                                        element =>
                                        new
                                        {
                                            Number = element.FirstAttribute.Value,
                                            Values = element.Elements().Select(elm => new {elm.Name, elm.Value})
                                        });
            foreach (var obj in enumerable)
            {
                Console.WriteLine(obj.Number);
                foreach (var value in obj.Values)
                {
                    Console.WriteLine("{0} {1}", value.Name, value.Value);
                }
            }
            Console.ReadKey();
        }
    }
}

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


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

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

14   голосов , оценка 3.714 из 5