【问题标题】:Printing out element values from XmlReader从 XmlReader 打印出元素值
【发布时间】:2020-05-10 19:38:21
【问题描述】:

我想上传一个 xml 文件,然后遍历整个文件并打印出文件中每个元素的每个值。

所以,我有这个 xml 文件:

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

现在,使用XmlReader,我想遍历文件的每个元素,并在控制台中打印出值。这是我的代码:

        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”时,它得到的值是每次都是一个空字符串。我做错了什么?

【问题讨论】:

    标签: c# xml xmlreader


    【解决方案1】:

    你的元素是文本元素吗?

    写出xmlReader.Name 以检查您写出的内容。

    【讨论】:

      【解决方案2】:

      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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 2013-03-18
        • 1970-01-01
        • 2011-01-22
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        相关资源
        最近更新 更多