Dodawanie elementów do plików xml

0

Mam plik XML, który wygląda mniej więcej tak:

<root>
  <rozmowa>
    <rid>1</rid>
    <nazwa>as</nazwa>
    <dialogi>
      <dialog>
        <rid>1</rid>
        <did>1</did>
        <tekst0>
          <did>1</did>
          <tekst>abc</tekst>
        </tekst0>
        <tekst1>
          <did>1</did>
          <tekst>t1</tekst>
        </tekst1>
        <tekst2>
          <did>1</did>
          <tekst>t2</tekst>
        </tekst2>
      </dialog>
     </dialogi>
  </rozmowa>
</root>

I muszę dodać kolejny element "rozmowa", który będzie wyglądać tak jak ten, ale będzie miał inne wartości. W jaki sposób mogę go dodać?

0

Można też m.in. za pomocą XmlDocument, tworzysz, wczytujesz, tworzysz navigator, ptzechodzisz do odpowiedniego noda, dodajesz mu dziecko, zapisujesz.
Schemat masz, kodu za ciebie nie napiszę. I z łaski swojej zajrzyj do MSDN.

0

Jakbym były w msdn informacje o tym, to bym nie pisał na forum. Mam z msdn kod:

writer.WriteStartElement("book");
writer.WriteElementString("price", "19.95");
writer.WriteEndElement();
writer.Flush(); 

Tylko jak dodać elementy do istniejącego pliku?

0

hmm XmlWriter faktycznie chyba się nie da. Dawno nie bawiłem się xml'ami w c#. Schemat jaki opisałem ci z XmlDocument działa. Możesz też użyć XDocument jeśli to api jest dla ciebie wygodniejsze.

0

Mam tylko kod:

new XComment("This is a comment"),
    new XElement("Root",
        new XElement("Child1", "data1"),
        new XElement("Child2", "data2"),
        new XElement("Child3", "data3"),
        new XElement("Child2", "data4"),
        new XElement("Info5", "info5"),
        new XElement("Info6", "info6"),
        new XElement("Info7", "info7"),
        new XElement("Info8", "info8")
    ) 

Ale on nie pozwala dodać do istniejącego dokumentu. Bo ja w root muszę stworzyć element.

2

Rozwiązanie znalazłem. Poniżej zamieszczam kod, mam nadzieję, że pomoże innym użytkownikom.

XmlDocument xdoc = new XmlDocument();
xdoc.Load("plik.xml");
XmlNodeList oListNode = xdoc.GetElementsByTagName("root");
foreach (XmlNode oLinieNode in oListNode)
{
oLinieNode.InnerXml += "<rozmowa>...</rozmowa>";
}
//mamy dodane elementy

1 użytkowników online, w tym zalogowanych: 0, gości: 1