如何使用xml读取器读取XML文件?
问题描述:
问题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();
请让我知道如果你需要更多的澄清
答
XmlReader是无状态的,仅保留有关当前节点的信息,所以如果您正在阅读元素的内容并希望知道元素名称,则需要确保在读取开始元素节点时以某种方式保留元素名称。
如果您想知道父元素的名称,您需要在阅读xml文档时保留这些信息/状态。
如果你想开始阅读一个特定的节点,你应该通过节点读取xml文档节点,直到你阅读你想要开始的节点。
最终通过XmlReader
类读取XML比其它的更困难,一般来说你只会用XmlReader
如果XML文档使用替代品的一个非常大的,在其他大多数情况下:
- LINQ到XML
- 的XmlDocument类
- 使用XSD.exe以产生从可以用于经由XmlSerializer类连载和deserialise XML一个XSD文件的.NET类。
欲了解更多信息,请参阅XML Serialization in the .NET Framework
如果你真的想使用XmlReader
,那么你应该阅读Using the XmlReader Class。
与XPath或LINQ to XML相比,XMLReader实际上非常麻烦。我建议你看看那些,也作为替代。 – Mikecito 2011-04-29 04:03:42