如何使用xml reader读取XML文件?

时间:2011-04-29 03:56:44

标签: c#-4.0

问题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();

如果您需要更多说明,请告诉我

1 个答案:

答案 0 :(得分:2)

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

再次,如果您想知道父元素的名称,则需要在阅读xml文档时自己保留此信息/状态。

如果您希望开始在特定节点上阅读,您应该逐个节点地阅读xml文档,直到您阅读了您想要开始的节点。

最终通过XmlReader类读取xml比替代方法更难,一般来说,如果xml文档非常大,则只使用XmlReader,在大多数其他情况下使用其中一种替代方法:

有关详细信息,请参阅XML Serialization in the .NET Framework

如果您真的想要使用XmlReader,那么您应该阅读Using the XmlReader Class