使用 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;
这是我的 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;