Вот история. Я делал программу, каждый раз, когда она закрывается, все данные (ссылки на файлы), созданные пользователем, теряются, поэтому всякий раз, когда пользователь снова открывает программу, ему приходится снова выполнять всю работу.
Поэтому я решил использовать xml-файл для хранения данных, потому что dbms загружался слишком долго, а код для обработки простого текстового файла было бы трудно поддерживать.
Данные в основном состоят из ссылок, в которых хранятся два пути к файлам: один для источника и один для пункта назначения, один логический тип, представляющий состояние ссылки до закрытия программы, и несколько других менее важных вещей.
Когда программа загружает данные должны быть прочитаны, восстанавливая предыдущее состояние приложения.
Итак, я сделал xml-файл примерно так:
...
<Directories>
<Directory id="0">
<FilePath>C:\Test1</FilePath>
<PathSeparator>\</PathSeparator>
</Directory>
...
И использовал DataSet для получения данных.
Directory getDirectory()
{
ds = new DataSet();
ds.ReadXml(xmlPath);
DataRow[] myRow = ds.Tables["Directory"].
Select("id ="+id.ToString());// "id = id"
string temp = myRow[0]["FilePath"].ToString();
Directory result = new Directory();
result.path = temp;
temp = myRow[0]["PathSeparator"].ToString();
result.pathSeparator = temp[0];
return result;
}
Все это прекрасно работает, но затем я попытался добавить новые "строки" в xml:
public static int addDirectory(DataSet ds, char pathSeparator, string path)
{
DataRow myRow = ds.Tables["Directory"].NewRow();
myRow.ItemArray[0] = 8;
myRow.ItemArray[1] = path;
myRow.ItemArray[2] = pathSeparator.ToString();
myRow.ItemArray[3] = "lol";
ds.Tables["Directory"].Rows.Add(myRow);
ds.AcceptChanges();
ds.WriteXml(ApplicationDataManager.xmlPath);
return 8;
}
Но все это пишет в случайное место на .xml
Что я делаю не так?
Кстати, если у кого-то есть какие-либо предложения о том, как мне хранить эти данные, я был бы рад услышать (прочитать).
Заранее спасибо!
[Update]
Ссылки на файлы используются для создания соединения между двумя каталогами, поэтому их можно синхронизировать.