如何使用C#获取XML根节点?
我知道,如果知道节点名称,可以使用C#获取任何XML节点,但是我想要获取根节点,以便find名称。 这可能吗?
更新 :我使用XMLTextReader读取文件的URL,然后将其加载到XMLDocument对象。 基本上我试图避免LINQ到XML,但如果有另一种更好的方法,那么我总是一个好学生。
根节点是XmlDocument
的DocumentElement
属性
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;