使用 XmlReader 时,HasValue 属性 returns False!为什么?

When using XmlReader, the HasValue property returns False! Why?

这是我的 XML 文件...

<application>
  <name>My Application</name>
  <ou/>
  <area/>
  <created time="na"/>
  <id closed="no"/>
  <description>My App Description</description>
  <version type="beta">1.0</version>
  <modified>02/24/2016</modified>
  <files>
    <file>
      <name>my_app.exe</name>
      <size type="bytes" complete="yes" updated="no">225684</size>
      <description>Main GUI for Application.</description>
      <version>1.5</version>
      <modified>02/24/2016</modified>
    </file>
    <file>
      <name>testfile.dll</name>
      <size type="bytes" complete="yes" updated="no">1024</size>
      <description>Support DLL for Application.</description>
      <version>1.1</version>
      <modified>02/23/2016</modified>
    </file>
  </files>
</application>

我用它来阅读我的 XML 文件...

using (XmlReader reader = XmlReader.Create("my_xml_file.xml"))
{
  while (!reader.EOF)
  {
    switch (reader.NodeType)
    {
      case XmlNodeType.Element:
        if (reader.HasValue)
          Debug.WriteLine("Node Value:" + reader.ReadString());
        break;
    }
  }
}

我不知道为什么,但出于某种原因,我的 reader.HasValue 属性 总是 FALSE。当该节点上有值时,我认为 属性 应该是 TRUE。如果我每次都调用 reader.ReadString(),它会提前 reader 并弄乱我正在尝试做的事情。我做错了吗?

该元素本身没有值(在您的意思是 - 它不能)- 元素中的 "text" 节点有。

      case XmlNodeType.Text:
      Console.Write(reader.Value);
      break;