从 XmlReader 打印出元素值
Posted
技术标签:
【中文标题】从 XmlReader 打印出元素值【英文标题】:Printing out element values from 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”时,它得到的值是每次都是一个空字符串。我做错了什么?
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于从 XmlReader 打印出元素值的主要内容,如果未能解决你的问题,请参考以下文章
XmlReader - 如何在没有 System.OutOfMemoryException 的情况下读取元素中很长的字符串