C# 4.0 如何使用XML阅读器读取XML文件?

C# 4.0 如何使用XML阅读器读取XML文件?,c#-4.0,C# 4.0,问题1:假设我正在阅读XmlNodeType.Text,我想知道它的标记节点名。如何在不上下移动光标的情况下实现这一点?另外,我如何知道当前节点标记的父标记 问题2:假设我正在读取xml文件,我想从特定的节点标记开始。你怎么能这么做 问题3:如果您有xsd文件,有没有简单的方法上传xml文件?我正在使用C#3.5.net和sql server 2008 这是我到目前为止写的: XmlTextReader reader = new XmlTextReader("datafile.xml"); wh

问题1:假设我正在阅读XmlNodeType.Text,我想知道它的标记节点名。如何在不上下移动光标的情况下实现这一点?另外,我如何知道当前节点标记的父标记

问题2:假设我正在读取xml文件,我想从特定的节点标记开始。你怎么能这么做

问题3:如果您有xsd文件,有没有简单的方法上传xml文件?我正在使用C#3.5.net和sql server 2008

这是我到目前为止写的:

XmlTextReader reader = new XmlTextReader("datafile.xml");
while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Element)
    {
        Console.Write(reader.Name);
    }
    else if (reader.NodeType == XmlNodeType.Text)
    {
        Console.Write("/"+reader.Name+"/" + reader.Value+"/");
    }
    else
    {
        if (reader.NodeType == XmlNodeType.EndElement)
        {
            Console.WriteLine(reader.Name);
            Console.ReadLine();
        }
    }
}
reader.Close();
如果您需要更多说明,请告知我

是无状态的,只保留有关当前节点的信息,因此如果您正在读取元素的内容并希望知道元素名称,则需要确保在读取开始元素节点时,您以某种方式保留了元素名称

同样,如果您想知道父元素的名称,您需要在阅读xml文档时保留此信息/说明您自己

如果希望从某个特定节点开始读取,则应该逐个节点地遍历并读取xml文档,直到读取希望从其开始的节点为止

最终,通过
XmlReader
类读取xml要比其他选项更困难,一般来说,如果xml文档的大小非常大,您只会使用
XmlReader
,在大多数其他情况下,使用以下选项之一:

  • Linq到XML
  • 班级
  • 用于从XSD文件生成.Net类,该类可用于通过类序列化和反序列化xml
有关更多信息,请参阅


如果您真的想使用
XmlReader
,那么您应该阅读。

与XPath或LINQ to XML相比,XmlReader实际上很麻烦。我建议你也把这些作为一种选择。