使用ReadElementContentAsString读取时,XmlReader“Text”是无效的XmlNodeType

时间:2015-11-02 12:19:47

标签: c# .net xml xmlreader

我正在尝试阅读以下XML文件:

<?xml version="1.0" encoding="utf-8"?>
<recipe>
  <name>5 SE</name>
  <timecreated>02.11.2015 13:13:36</timecreated>
  <min>90</min>
  <max>130</max>
  <range>40</range>
  <avg>110</avg>
  <stddev>40</stddev>
</recipe>

我的代码如下所示:

XmlReader reader = XmlReader.Create("data.xml");
reader.ReadStartElement("recipe");
reader.ReadStartElement("name");
String content = reader.ReadElementContentAsString("name", "");´

在最后一行引发异常:

  

发生了'System.Xml.XmlException'类型的未处理异常   system.xml.dll的

     

附加信息:'Text'是无效的XmlNodeType。 3号线,   第9位。

为什么'Text'是无效的节点类型? ReadElementContentAsString听起来像是可以轻松地将'Text'作为字符串返回。

1 个答案:

答案 0 :(得分:2)

ReadElementContentAsString一起读取元素及其内容。因此,您不应该使用<name>节点,也不应仅使用ReadContentAsString

XmlReader reader = XmlReader.Create("data.xml", new XmlReaderSettings { IgnoreWhitespace = true });
reader.ReadStartElement("recipe");
// reader.ReadStartElement("name"); - now you will be at the <name> element instead of "5 SE" text
String content = reader.ReadElementContentAsString("name", "");