2012-02-07 10 views
8

Po pierwsze jest to C#. Tworzę pulpit nawigacyjny dla małej grupy osób w NHS. Poniżej znajduje się przykładowy plik xml, w którym muszę zmienić tekst innertext. Muszę zastąpić konkretny element, na przykład "Warsztat1". Ponieważ mamy kilka warsztatów, nie mogę sobie pozwolić na używanie pisarza ogólnego, ponieważ zastąpi on wszystkie informacje zawarte w dokumencie XML tym jednym kodem poniżej.Wymiana innertext węzła/elementu Xml

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

Używam przypadek przełącznika aby wybrać konkretny warsztat, w którym można zmienić nazwę i dodać adres URL warsztacie i przy użyciu tego kodu poniżej zastąpi cały dokument.

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; 


     } 


    } 

Więc po prostu chcę, aby wyjaśnić mój program C#, aby przeglądać dokument XML znaleźć element „Workshop1” i zastąpić innerText tekst z pola tekstowego. i móc go zapisać bez zastępowania całego dokumentu jednym węzłem. Dzięki za spojrzenie.

+2

Czy istnieje powód, dla którego nie używasz API 'XDocument' lub przynajmniej' XmlDocument'? Zwykle używasz 'XmlReader' /' XmlWriter', jeśli musisz przetwarzać * ogromne * pliki XML. –

+0

Cóż, jestem trochę początkujący w C#. Aby uruchomić ogólny program, łączę kod razem, a kiedy widzę, że działa, mogę zmienić kod, aby był bardziej wydajny. W ten sposób mogę nauczyć się różnicy pomiędzy brzydkimi i czystymi sposobami robienia rzeczy i zrozumieć zalety obu. Jednak dziękuję za wskazówki, będę teraz używać XMLReader/XMLWriter. – Marshal

+0

Moja rada była taka, aby NIE używać 'XmlReader' /' XmlWriter' ... –

Odpowiedz

10

Korzystanie XmlDocument i XPath można to zrobić

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

Można użyć doc.Save zapisać plik również.

Przeczytaj więcej o XmlDocument na MSDN.

EDIT

Aby zapisać dokument zrobić

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

nadzieję, że to pomaga.

+0

Myślę, że działa. Jedynym problemem jest to, że nie pozwolę mi zapisać dokumentu. Używam "doc.Save;" Pojawia się jednak błąd ** "Tylko instrukcje, wywołanie, inkrementacja, dekrementacja i nowe wyrażenia obiektowe mogą być używane jako instrukcja." ** Czy to dlatego, że nie używam XMLWriter? lub? Pracowałem nad tym jednym programem od tak dawna, że ​​prawdopodobnie jestem idiotą. Jeśli spojrzysz powyżej, zobaczysz, że się poprawiła. – Marshal

+0

Proszę sprawdzić moją zaktualizowaną odpowiedź. –

+0

Edytował powyższy kod, aby pokazać, że działa i dla przyszłych użytkowników jako punkt odniesienia. Dzięki Amar Palsapure. – Marshal