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

时间:2016-02-27 22:43:11

标签: c# xml .net-4.0

这是我的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(),它会让读者前进并搞砸我正在尝试做的事情。我错了吗?

1 个答案:

答案 0 :(得分:1)

元素本身没有价值(从某种意义上说,你的意思是 - 它不能) - &#34;文本&#34;元素中的节点。

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