替换Xml节点/元素的innertext

Mar*_*hal 9 c# xml xmlwriter xmlreader winforms

首先,这是C#.我正在为NHS中的一小部分同事创建一个互联网仪表板.下面是一个示例xml文件,我需要更改其中的innertext.我需要替换特定元素,例如"Workshop1".因为我们有一些研讨会,所以我不能使用通用编写器,因为它将使用下面的这一段代码替换XML文档中的所有信息.

<?xml version="1.0" ?> 
   <buttons>
      <workshop1>hello</workshop1> 
      <url1>www.google.co.uk</url1> 
Run Code Online (Sandbox Code Playgroud)

我正在使用一个开关盒来选择一个特定的工作室,您可以在其中更改名称并添加研讨会的URL,使用下面的代码将替换整个文档.

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;


        }


    }
Run Code Online (Sandbox Code Playgroud)

所以只是为了澄清我希望我的C#程序搜索XML文档找到元素"Workshop1"并用文本框中的文本替换innertext.并且能够保存它而无需用一个节点替换整个文档.谢谢你的期待.

Ama*_*ure 12

使用XmlDocument和XPath可以做到这一点

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

您也可以使用它doc.Save来保存文件.

了解更多关于XmlDocumentMSDN.

编辑

要保存文档,请执行此操作

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

希望这对你有所帮助.