Usarsef Ответов: 1

Сохранить поле со списком и текстовое поле в существующий XML-файл c#


Привет я ищу добавить 1 текстовое поле и 3 comboboxs в exisitng xml файл с помощью XDocument чтобы быть в результате как показано ниже

<pre><?xml version="1.0" encoding=""?>

<root>
++++++++++++++++
<Textbox>item1</Textbox>              
<combobox1>item2</combobox1>
<combobox2>item3</combobox2>
<combobox3>item4</combobox3>
++++++++++++++++
<table> 

  <rd>
    <id>45</id>
    <name>alex</name>
    <last>chali</last>
    <phone>33666998565</phone>
    <refF>
      <adresse>41301 US Hwy 280, Sylacauga AL 35150</adresse>
      <citie>NY</citie>
    </refF>
    <age>30</age>
    <mp>
      <degree>2</degree>
    </mp>
    <dpa>1</dpa>
  </rd>

  </table>

</root>


Что я уже пробовал:

string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1><table></table></Sheet1>";
XDocument doc = XDocument.Parse(header);
XElement table = doc.Root.Element("table");

foreach (DataRow row in dt.AsEnumerable())
{
    XElement rd = new XElement("rd", new object[] {
        new XElement("id", row["id"]),
        new XElement("name", row["name"]),
        new XElement("last", row["last"]),
        new XElement("phone", row["phone"]),
        new XElement("refF", new object[] {
            new XElement("adresse", row["adresse"]),
            new XElement("citie", row["citie"]),
        }),
        new XElement("age", row["age"]),
        new XElement("mp", new XElement("degree", row["mp"])),
        new XElement("dpa", row["dpa"])
    });

    table.Add(rd);
}
doc.Save(FILENAME);

1 Ответов

Рейтинг:
12

Richard Deeming

Простой:

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XElement("root",
        new XElement("Textbox", YOUR_TEXTBOX_VALUE_HERE),
        new XElement("combobox1", YOUR_COMBOBOX1_VALUE_HERE),
        new XElement("combobox2", YOUR_COMBOBOX2_VALUE_HERE),
        new XElement("combobox3", YOUR_COMBOBOX3_VALUE_HERE),
        new XElement("table",
            dt.AsEnumerble().Select(row => new XElement("rd",
                new XElement("id", row["id"]),
                new XElement("name", row["name"]),
                new XElement("last", row["last"]),
                new XElement("phone", row["phone"]),
                new XElement("refF",
                    new XElement("adresse", row["adresse"]),
                    new XElement("citie", row["citie"]),
                ),
                new XElement("age", row["age"]),
                new XElement("mp", new XElement("degree", row["mp"])),
                new XElement("dpa", row["dpa"])
            ))
        )
    )
);

doc.Save(FILENAME);


Usarsef

Теперь когда я это сделал значение из текстового поля и combobox не появляется в xml файле

Richard Deeming

Значит, ты сделал что-то не так.

Usarsef

Я исправил эту проблему, спасибо за помощь.

Maciej Los

5ed!