简体   繁体   中英

Using XDocument to read the root element from XML using C# is not showing the root element

I am new to C# programming and trying to update the XML file using C#. Here when I am trying to get the root element using XDocument it is showing the complete script in the file.

Below is my code explanation:

I am having the below function and it is reading the file path from the command line arguments.

private XDocument doc;

public void Update(string filepath)
{
   string filename = Path.GetFileName(filepath);

   doc = xDocument.Load(filepath);

   XElement rootelement = doc.Root;

}

Into the filepath variable, we are taking the path "E:\\BuilderTest\\COMMON.wxs"

Then we are loading the file using XDocument.

But when we are trying to get the rootelement from the file, it is not showing the root element. Instead, it is showing the complete data in the file.

But when I am using XmlDocument() instead of XDocument() I am able to see only the root element.

Below is the code using XmlDocument():

private XmlDocument doc;

public void Update(string filepath)
{
   string filename = Path.GetFileName(filepath);

   doc = new XmlDocument();
   doc.Load(filepath);

   XmlElement rootelement = doc.DocumentElement;
}

Please help me by providing your valuable inputs on this.

XDocument and XmlDocument are different class structure to follow as per requirement.

XDocument will work like below

XDocument doc;
doc = XDocument.Load(filepath);
XElement root = doc.Root;

Root, Descendants, Elements are the operations provided in XDocument . For every node its gives XElement

In your case you should use doc.Root to find the element, then use .Value to get its value

XElement comes with System.Xml.Linq . It is derived from XNode . It gives you serialized information of every node one by one.

On the other hand XMLDocument will work like below

XmlDocument doc;
doc = new XmlDocument();
doc.Load(filepath);
XmlElement rootelement = doc.DocumentElement;

XmlElement comes with System.Xml . It is derived from XmlNode which is again derived from IEnumerable . It gives you information in a Enumerable which you can easily parse.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM