Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1110
  • Last Modified:

Inserting Xelement in XML file before the root

Hi Experts,
Still learning LINQ and stuck on this one..
I have a pretty simple XML file:

Xdoc document = XDoc.Load("
<root>
<hi>
  <node1></node1>
  <node2></node2>
  <node3></node3>
</hi>
<hi>
  <node1></node1>
  <node2></node2>
  <node3></node3>
</hi>
</root>
");

How can I insert another <hi> XElement before before the </root>. Seems like the only options are to Add right after the <root> or as a child to the <root>.
Thank you in advance.
0
techsuppoprt
Asked:
techsuppoprt
  • 2
  • 2
1 Solution
 
Fernando SotoRetiredCommented:
Hi techsuppoprt;

I am on the learning curve with Linq myself. But here is an answer to your question, see sample.

The Add extension method adds the element to the end, should have called this method AddLast, If you want to add it to the front use the AddFirst method.

Fernando
XDocument document = new XDocument(
	new XElement("root",
		new XElement("hi",
			new XElement("node1", ""),
			new XElement("node2", ""),
			new XElement("node3", "")),
		new XElement("hi",
			new XElement("node1", ""),
			new XElement("node2", ""),
			new XElement("node3", ""))
	));
		
/* Result of the code above
<root>
  <hi>
    <node1></node1>
    <node2></node2>
    <node3></node3>
  </hi>
  <hi>
    <node1></node1>
    <node2></node2>
    <node3></node3>
  </hi>
</root>
*/
 
// Add a new element to the end of the tree just before </root>
document.Element("root").Add(new XElement(new XElement("hi",
			new XElement("node1", "Value1"),
			new XElement("node2", "Value2"),
			new XElement("node3", "Value3"))));
 
/* This is the result of the add
<root>
  <hi>
    <node1></node1>
    <node2></node2>
    <node3></node3>
  </hi>
  <hi>
    <node1></node1>
    <node2></node2>
    <node3></node3>
  </hi>
  <hi>
    <node1>Value1</node1>
    <node2>Value2</node2>
    <node3>Value3</node3>
  </hi>
</root>
*/

Open in new window

0
 
techsuppoprtAuthor Commented:
Oh nice, that was simple.

I was trying to do
document.Add(.....)
and all I had to do the name of the "root element I want to add my XElement to... makes perfect sence!
Thanks again Fernando!
0
 
techsuppoprtAuthor Commented:
Thanks again
0
 
Fernando SotoRetiredCommented:
Not a problem, always glad to help. ;=)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now