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

时间:2010-12-21 10:43:47

标签: c# xml

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

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

5 个答案:

答案 0 :(得分:77)

根节点是DocumentElement

XmlDocument属性
XmlElement root = xmlDoc.DocumentElement

如果您只有节点,则可以通过

获取根节点
XmlElement root = xmlNode.OwnerDocument.DocumentElement

答案 1 :(得分:20)

我在这里得到了同样的问题。如果文档很大,使用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;
      }
    }
  }

答案 2 :(得分:13)

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

这是一个简化版本,使用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;
}

答案 3 :(得分:0)

试试这个

XElement root = XDocument.Load(fStream).Root;

答案 4 :(得分:0)

string rootNode = null;
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(response.GetResponseStream());
rootNode = XmlDoc.ChildNodes(0).Name;