Не добавляется элемент в XML

248
20 июля 2018, 18:40

Не добавляется элемент в XML-базу. Пробую так:

XElement user = new XElement(username);
XAttribute timeto_ = new XAttribute("TimeTo", "");
XAttribute chatid_ = new XAttribute("chat_id", chatid.ToString());
user.Add(timeto_);
user.Add(chatid_);
users.AddFirst(user);
db.Save("data.xml");

db - создано в классе public static XDocument db = XDocument.Load("data.xml");. users - главный элемент public static XElement users = new XElement("users");.

Answer 1

Писал на коленке (нужна оптимизация). Поддерживает единичную запись и добавление нового узла:

string[] array = {"Sasha", "Masha", "Natasha"};
foreach (string username in array)
{
    Boolean exists = File.Exists("data.xml");
    XDocument xdoc = exists ? XDocument.Load("data.xml") : new XDocument();
    XElement list = exists ? (xdoc.Element("users") == null ? new XElement("users") : xdoc.Element("users")) : new XElement("users");
    XElement user = new XElement(username);
    XAttribute timeto_ = new XAttribute("TimeTo", DateTime.Now.ToString("dd.MM.yyyy, HH:mm:ss"));
    user.Add(timeto_);
    XAttribute chatid_ = new XAttribute("chat_id", "1");
    user.Add(chatid_);
    if (list.HasElements)
        list.AddFirst(user);
    else
        list.Add(user);
    if (exists)
        xdoc.ReplaceNodes(list);
    else
        xdoc.Add(list);
    xdoc.Save("data.xml");
    MessageBox.Show("Added: " + username);
}

Результат (конечный):

<?xml version="1.0" encoding="utf-8"?>
<users>
  <Natasha TimeTo="17.06.2018, 15:11:24" chat_id="1" />
  <Masha TimeTo="17.06.2018, 15:11:23" chat_id="1" />
  <Sasha TimeTo="17.06.2018, 15:11:22" chat_id="1" />
</users>

Т.к. автор не описал суть своего кода. Возможно многое можно выкинуть или что-то придётся добавить. Очень хорошее описание работы с XML документами в примерах кода и результата для System.Xml, для System.Xml.Linq.

READ ALSO
Игральные карты — пасьянс

Игральные карты — пасьянс

Пишу консольную программку на c#, задание такое: Создать класс колоду картСоздать конструкторы колоды должны инициализировать колоду как...

337
Как использовать две базы данных в проекте ASP.NET MVC?

Как использовать две базы данных в проекте ASP.NET MVC?

Есть основная база данных PostgreSQL, требуется создать программно ее локальную копию, чтоб была возможность производить над ней все те же операции,...

228
Считать из файла пароль PowerShell + C#

Считать из файла пароль PowerShell + C#

Есть такой скрипт PowerShell

275
Подключения к прокси

Подключения к прокси

Есть мой сервер на PHPЕсть прокси сервер http

262