How do I get the XML root node with C#?

前端 未结 5 613
天命终不由人
天命终不由人 2020-12-03 02:31

I know that it\'s possible to get any XML node using C# if you know the node name, but I want to get the root node so that I can find out the name. Is this possible?

相关标签:
5条回答
  • 2020-12-03 02:48

    Try this

    XElement root = XDocument.Load(fStream).Root;
    
    0 讨论(0)
  • 2020-12-03 02:51
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(response.GetResponseStream());
    string rootNode = XmlDoc.ChildNodes[0].Name;
    
    0 讨论(0)
  • 2020-12-03 02:56

    I got the same question here. If the document is huge, it is not a good idea to use XmlDocument. The fact is that the first element is the root element, based on which XmlReader can be used to get the root element. Using XmlReader will be much more efficient than using XmlDocument as it doesn't require load the whole document into memory.

      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;
          }
        }
      }
    
    0 讨论(0)
  • 2020-12-03 03:03

    Root node is the DocumentElement property of XmlDocument

    XmlElement root = xmlDoc.DocumentElement
    

    If you only have the node, you can get the root node by

    XmlElement root = xmlNode.OwnerDocument.DocumentElement
    
    0 讨论(0)
  • 2020-12-03 03:07

    Agree with Jewes, XmlReader is the better way to go, especially if working with a larger XML document or processing multiple in a loop - no need to parse the entire document if you only need the document root.

    Here's a simplified version, using XmlReader and 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;
    }
    
    0 讨论(0)
提交回复
热议问题