Распечатка значений элементов из XmlReader - PullRequest
0 голосов
/ 24 января 2020

Я хочу загрузить xml файл , а затем go через весь файл и распечатать каждое значение из каждого из элементов в файле.

Итак , У меня есть xml файл:

<Student>
        <Surname>Adrien</Surname>
        <Lastname>Wilsen</Lastname 
        <School>LUA</School>
        <GPA>10.5</GPA>
</Student>

Теперь, с XmlReader я хочу go через каждый элемент файла и распечатать значение в консоли. Вот мой код:

        XmlReader xmlReader;
        string xmlFilePath = @"C:\Student.xml";

        xmlReader = XmlReader.Create(xmlFilePath);

        while(xmlReader.Read())
        {
            if(xmlReader.NodeType == XmlNodeType.Element)
            {
                string val = xmlReader.Value;
                Console.WriteLine(val);
            }
        }
        Console.ReadKey();

Когда я отлаживаю свой код, я вижу, что он вводит мой if statement, но когда я вынимаю value и сохраняю его в моей переменной "val ", он каждый раз получает значение пустой строки. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 24 января 2020

https://docs.microsoft.com/en-us/dotnet/api/system.xml.xmlreader.value?view=netframework-4.8

Вы должны использовать в своем операторе if XmlNodeType.Text:

if(xmlReader.NodeType == XmlNodeType.Text)
{
   string val = xmlReader.Value;
   Console.WriteLine(val);
}

Для XmlNodeType.Element вы можете распечатать имя элемента:

if(xmlReader.NodeType == XmlNodeType.Element)
{
   string val = xmlReader.Name;
   Console.WriteLine(val);
}
0 голосов
/ 24 января 2020

Является ли ваш элемент текстовым?

Запишите xmlReader.Name, чтобы проверить, что вы пишете.

...