Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Дозаписывание файла через XmlTextWriter


Автор: Darkmaster 2.5.2008, 19:24
Возник небольшой вопрос при работе с XML. Есть файл, который имеет структуру подобную этому:

Код

<employer>
<people ID="1">
<name>John</name>
<sex>M</sex>
// и так далее
</name>
</employer>


Нужно дозаписывать в этот файл новых людей <people> </people>

Это очень легко сделать при помощи XMlDocument - но в таком случае работа будет несколько медленнее, чем если использовать XMLTextWriter. Но проблема последнего заключается в том, что он всегда заново перезаписывает файл. Пробовал делать добавления при помощи такого открытия файла:

Код

StreamWriter p_x = File.AppendText(xml_path_journal);
XmlTextWriter writer = new XmlTextWriter(p_x);



Да, тогда нужные мне данные и впрямь записываются в файл, но уже после </employer> А должны быть внутри. Существует ли какой-нибудь способ добавления данных в файл при помощи XmlTextReader? Долго искал, пока везде видел информацию только про XMlDocument, которая и так уже известна...

Добавлено через 10 минут и 44 секунды
может вот так:
Код


XmlDocument xml = new XmlDocument(); 
xml.Load("path to xml file"); 
XmlWriter writer;             
xml.WriteContentTo(writer); 


Или это не оптимальный вариант?

Автор: mr.DUDA 3.5.2008, 10:12
Читаем содержимое всего файла в строку, добавляем в строку свой XML с нужной позиции, сохраняем всю строку обратно в файл. Так подойдёт ?

Автор: Ordenador 10.5.2008, 21:51
mr.DUDA
Но тогда записываться будет уже после </employer>, так ведь?

Автор: kosten_spb 11.5.2008, 13:56
Ordenador
Цитата(mr.DUDA @  3.5.2008,  08:12 Найти цитируемый пост)
добавляем в строку свой XML с нужной позиции



Автор: WaReZMEN 19.2.2009, 19:15
Меня тоже интересует проблему то решили? Вариант с считыванием в переменную не подходит...

Автор: Nestap 23.2.2009, 22:43
рибята а как если есть хмл на веб как загрузить его??

Автор: jonie 24.2.2009, 00:49
Nestap загрузить XML файл на WWW ресурс ? тогда точно также как и любой другой файл. http://www.google.com/search?client=opera&rls=ru&q=upload+file+C%23&sourceid=opera&ie=utf-8&oe=utf-8 скажет.


По теме, могу предложить очень простой вариант без излишков геммороя - использовани внешнего файла. Вот пример
Код

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE cruisecontrol [
  <!ENTITY IntellectProject SYSTEM "IntellectProject.xml">
]>
<cruisecontrol>
&IntellectProject;
</cruisecontrol>


ну и IntellectProject.xm приаттачится (и это произойти по идее должно в "прозрачном" режиме).....
соотвественно можно "дозаписать", используя что угодно - ведь размер файла не будет такой большой....

Автор: Nestap 24.2.2009, 17:01
jonie

вот проблема!
ести курс валют (на веб) каждый день упдате
как читать етот хмл??
плеасе?

Автор: jonie 24.2.2009, 21:28
Nestap : http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=115
1) грузим файл
2) работаем с ним. например через XMLDocument

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)