Замена внутреннего текста узла / элемента Xml - PullRequest
9 голосов
/ 07 февраля 2012

Прежде всего это C #. Я создаю интернет-панель для небольшой группы колледжей в NHS. Ниже приведен пример XML-файла, в котором мне нужно изменить внутренний текст. Мне нужно заменить конкретный элемент, например, «Мастерская1». Поскольку у нас есть несколько семинаров, я не могу позволить себе использовать обычного писателя, потому что он заменит всю информацию в документе XML на этот фрагмент кода ниже.

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

Я использую переключатель, чтобы выбрать конкретный семинар, в котором вы можете изменить название и добавить 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;


        }


    }

Итак, просто чтобы уточнить, я хочу, чтобы моя программа на C # искала документ XML, нашла элемент «Workshop1» и заменила внутренний текст текстом из textBox. и сможете сохранить его, не заменяя весь документ одним узлом. Спасибо за поиск.

1 Ответ

12 голосов
/ 07 февраля 2012

Используя XmlDocument и XPath, вы можете сделать это

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

. Вы также можете использовать doc.Save для сохранения файла.

Подробнее о XmlDocument в MSDN .

РЕДАКТИРОВАТЬ

Чтобы сохранить документ, сделайте это

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

Надеюсь, это поможет вам.

...