2012-02-07 4 views
8

Прежде всего это C#. Я создаю интернет-панель для небольшой группы коллег в NHS. Ниже приведен пример XML-файла, в котором мне нужно изменить внутренний текст. Мне нужно заменить конкретный элемент, например «Workshop1». Поскольку у нас есть несколько семинаров, я не могу позволить себе использовать общий писатель, потому что он заменит всю информацию в документе XML этим одним из приведенных ниже кодов.Замена внутреннего текста узла/элемента 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» и заменить InnerText с текстом из текстового поля. и иметь возможность сохранять его, не заменяя весь документ одним узлом. Спасибо, что посмотрели.

+2

Есть ли причина, по которой вы не используете «XDocument» или, по крайней мере, API «XmlDocument»? Обычно вы используете 'XmlReader' /' XmlWriter', если вам нужно обработать * огромные * XML-файлы. –

+0

Ну, я немного новичок в C#. Поэтому, чтобы запустить общую программу, я сфокусирую код, а затем, когда вижу, что он работает, я могу изменить код, чтобы сделать его более эффективным. По крайней мере, таким образом я могу узнать разницу между уродливыми и чистыми способами делать вещи и понимать преимущества обоих. Однако спасибо за руководство. Теперь я буду использовать XMLReader/XMLWriter. – Marshal

+0

Мой совет был НЕ использовать 'XmlReader' /' XmlWriter' ... –

ответ

10

Использование 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.

EDIT

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

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

Надеется, что это помогает вам.

+0

Я думаю, что он работает. Единственная проблема сейчас - это не позволит мне сохранить документ. Я использую «doc.Save»; Однако при этом возникает ошибка ** «В качестве оператора можно использовать только назначение, вызов, приращение, декремент и новые объектные выражения». ** Является ли это потому, что я не использую XMLWriter? или? Я работаю над этой одной программой так долго, наверное, я идиот. Если вы посмотрите выше, вы можете увидеть, как это было исправлено. – Marshal

+0

Пожалуйста, уточните мой обновленный ответ. –

+0

Отредактирован код выше, чтобы показать, что он работает и для будущих пользователей в качестве ссылки. Благодаря Амару Палсапуре. – Marshal

Смежные вопросы