2011-04-29 188 views
1

问题1:假设我正在阅读XmlNodeType.Text,我想知道它的标记节点名称。如何在不移动光标的情况下做到这一点?另外我怎样才能知道当前节点标签的父标签?如何使用xml读取器读取XML文件?

问题2:假设我正在读取xml文件,并且想从特定的节点标记开始。怎么可以做到这一点?

问题3:如果你有xsd文件,有没有简单的方法来上传xml文件?我使用C#.NET 3.5和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

与XPath或LINQ to XML相比,XMLReader实际上非常麻烦。我建议你看看那些,也作为替代。 – Mikecito 2011-04-29 04:03:42

回答

2

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

如果您想知道父元素的名称,您需要在阅读xml文档时保留这些信息/状态。

如果你想开始阅读一个特定的节点,你应该通过节点读取xml文档节点,直到你阅读你想要开始的节点。

最终通过XmlReader类读取XML比其它的更困难,一般来说你只会用XmlReader如果XML文档使用替代品的一个非常大的,在其他大多数情况下:

欲了解更多信息,请参阅XML Serialization in the .NET Framework

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