Replacing the innertext of an Xml node/element

33,845

Using XmlDocument and XPath you can do this

XmlDocument doc = new XmlDocument();
doc.Load(reader); //Assuming reader is your XmlReader
doc.SelectSingleNode("buttons/workshop1").InnerText = "new text";

You can use doc.Save to save the file also.

Read more about XmlDocument on MSDN.

EDIT

To save the document do this

doc.Save(@"C:\myXmFile.xml"); //This will save the changes to the file.

Hope this helps you.

Share:
33,845
Marshal
Author by

Marshal

Foresic Computing student at the University of the West of England. I have some knowledge of Java however am focusing now on C#.

Updated on February 08, 2020

Comments

  • Marshal
    Marshal about 4 years

    First of all this is C#. I am creating a internet dashboard for a small group of colleages in the NHS. Below is an example xml file in which I need to change the innertext of. I need to replace a specific element for example "Workshop1." Because we have a few workshops I cannot afford to use a general writer because it will replace all the information on the XML document with this one bit of code below.

    <?xml version="1.0" ?> 
       <buttons>
          <workshop1>hello</workshop1> 
          <url1>www.google.co.uk</url1> 
    

    I am using a switch case to select a specific workshop where you can change the name and add a URL of the workshop and using this code below will replace the whole document.

    public void XMLW()
        {
            XmlTextReader reader = new XmlTextReader("C:\\myXmFile.xml");
            XmlDocument doc = new XmlDocument(); 
    
            switch (comboBox1.Text)
    
            {
                case "button1":
    
    
                    doc.Load(reader); //Assuming reader is your XmlReader 
                    doc.SelectSingleNode("buttons/workshop1").InnerText = textBox1.Text;
                    reader.Close();
                    doc.Save(@"C:\myXmFile.xml");
                    break;
    
    
            }
    
    
        }
    

    So just to clarify I want my C# program to search through the XML document find the element "Workshop1" and replace the innertext with text from a textBox. and be able to save it without replacing the whole document with one node. Thanks for looking.

  • Marshal
    Marshal about 12 years
    I think its working. The only issue now is it won't let me save the doc. I am using the "doc.Save;" However it's coming up with an error "Only assignment, call, increment, decrement, and new object expressions can be used as a statement." Is this because I am not using an XMLWriter? or? I have been working on this one program for so long it's probably me being an idiot. If you look above you can see it ammended.
  • Marshal
    Marshal about 12 years
    Edited the code above to show now that it's working and for future users as a reference. Thanks to Amar Palsapure.
  • Amar Palsapure
    Amar Palsapure about 12 years
    Its great when things come together and run smoothly :)