如何使用C#获取XML根节点?

我知道,如果知道节点名称,可以使用C#获取任何XML节点,但是我想要获取根节点,以便find名称。 这可能吗?

更新 :我使用XMLTextReader读取文件的URL,然后将其加载到XMLDocument对象。 基本上我试图避免LINQ到XML,但如果有另一种更好的方法,那么我总是一个好学生。

根节点是XmlDocumentDocumentElement属性

 XmlElement root = xmlDoc.DocumentElement 

如果你只有节点,你可以通过获取根节点

 XmlElement root = xmlNode.OwnerDocument.DocumentElement 

我在这里得到了同样的问题。 如果文档很大,使用XmlDocument不是一个好主意。 事实是,第一个元素是根元素,XmlReader可以用来获取根元素。 使用XmlReader将比使用XmlDocument更有效,因为它不需要将整个文档加载到内存中。

  using (XmlReader reader = XmlReader.Create(<your_xml_file>)) { while (reader.Read()) { // first element is the root element if (reader.NodeType == XmlNodeType.Element) { System.Console.WriteLine(reader.Name); break; } } } 

同意犹太人,XmlReader是更好的方法,特别是如果使用更大的XML文档或循环处理多个文档 – 如果您只需要文档根目录,则不需要parsing整个文档。

这是一个简化的版本,使用XmlReader和MoveToContent()。

http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.movetocontent.aspx

 using (XmlReader xmlReader = XmlReader.Create(p_fileName)) { if (xmlReader.MoveToContent() == XmlNodeType.Element) rootNodeName = xmlReader.Name; } 

尝试这个

 XElement root = XDocument.Load(fStream).Root; 
 string rootNode = null; XmlDocument XmlDoc = new XmlDocument(); XmlDoc.Load(response.GetResponseStream()); rootNode = XmlDoc.ChildNodes(0).Name;