PDA

View Full Version : اضافه کردن نود به انتهای xml file



arashmidos2020
یک شنبه 10 آبان 1388, 21:37 عصر
فایل ایکس ام ال از قبل ساخته شده و الان می خوایم یک نود جدید بهش اضافه کنم و از xmlTextWriter می خوام استفاده کنم.هر جا گشتم دیدم از اول میاد تمام نود ها رو دوباره می گیره و بعد میریزه اما اینجا می خوام فقط یک نود و به آخر فایل اضافه بشه.
تو ایکس ام ال چیزی مثل یک اشاره گر نداریم که بدونیم الان کجا هستیم و به رایتر بگیم از اونجا به بعد رایت کنه؟؟

Alirezanet
شنبه 17 بهمن 1388, 04:07 صبح
مثل اینکه کسی نمیدونه !!!!! من هم مشکل همینه ... کسی نمیتونه کمکی کنه ؟!

arashmidos2020
شنبه 17 بهمن 1388, 16:54 عصر
می دونی منم فکر می کنم اصلن نمی شه این کارو کرد!!!
چون ما از موضوع درست و سر جاش استفاده نکردیم

Alirezanet
شنبه 17 بهمن 1388, 20:32 عصر
من با یه روش زمانبر میتونم این کارو انجام بدم ولی اصولی نیست ...
من محتویات یک Treeview رو توی یک xml ذخیره و به همون شکل قبلی لود میکنم .. و اگه بخوام دوباره بهش چیزی اضافه کنم میشه توی Treeview اضافش کنم و اطلاعات قبلی رو هم لود کنم و ذخیره مجدد.... (البته همه این کارا خودکار انجام میشه ) فقط اینجوری زمان زیادی میبره .. !!!!

شاید کسی بتونه ... در مورد Xml توضیحات کامل هست ولی در مورد استفاده از اون مثلا در .net کسی چیزی نمیدونه ؟!!!!!!:گریه:

arashmidos2020
شنبه 17 بهمن 1388, 20:42 عصر
ببخشید ما می خوایم از SAX استفاده کنیم که کارمون سریعتر و راحت تر بشه نه اینکه دوباره کاری بکنیم وگرنه واسه این کار از همون متدهای DOM در XML استفاده می کردیم دیگه....

Alirezanet
شنبه 17 بهمن 1388, 22:53 عصر
آره خوب ولی چجوری .؟!!! من که هنوز مرجع فارسی پیدا نکرم که توضیحات داشته باشه ... همون چیزهای هم که یاد گرفتم از سایتهای خارجی تحقیق کردم ... ولی دیگه خیلی پیچیده شده فارسی باشه نمیشه راحت فهمید چه برسه به انگلیسی !!!

سراغ داشتی مارو هم خبر کن ..

arashmidos2020
شنبه 17 بهمن 1388, 22:57 عصر
1 مثال کامل توی کتاب Beginning XML with C# 2008 هست.برای حالت DOM
فکر می کنم خیلی واضح باشه. این کتاب خیلی خوبیه
موفق باشی

gwbasic
یک شنبه 09 اسفند 1388, 19:32 عصر
کتابی که بالا اشاره کردید منبع خوبی است می توانید از آن استفاده کنید.
در .Net هم هرچه بخواهید برای کار با Xml وجود دارد...
اما کد زیر شاید به درد شما بخورد:



XmlDocument doc=new XmlDocument();
doc.Load("File.xml");
XmlElement el=doc.CreateElement("ElementName");
el.InnerText="Text";
doc.DocumentElement.AppendChild(el);


کد زیر را همینطوری Type کردم شاید ایراد تایپی داشته باشد ولی اگر خودتان تایپ کنید در یک محیط مثل Visual Studio حتما جواب می دهد

موفق باشید

Alirezanet
یک شنبه 09 اسفند 1388, 20:50 عصر
خوب من یه کتاب خوب در مورد xml خریدم که آموزش کاملش برای Asp هست ...
فقط الان مشکل استفاده از Dom هست ... کسی میتونه بگه برای اینکه با کمبود حافظه توی فایل های بزرگ مواجه نشیم میتونیم چیکار کنیم ؟!؟!؟!

Dom مشکلش اشغال کردن حافظست و TextReader و TextWriter هم که مشکلشون اینه که ناقص هستند یعنی نمیشه که delete update و حتی ویرایشی روی اطلاعات انجام داد با اونها ...

کسی راه کار خوبی سراغ نداره ؟!

mohitlog
شنبه 01 خرداد 1389, 06:32 صبح
با سلام

به روش زیر میتوانید این کارو انجام بدین.


اولا باید namespace زیر را وارد کنید

using System.Xml;



یک شی از xmlDocument میسازی و لودش می کنی

XmlDocument xmlDoc = new XmlDocument();
string str = Server.MapPath("xml.xml");
xmlDoc.Load(str);



حالا شروع به ساختن نودها میکنی

XmlElement f1= xmlDoc.CreateElement("f1");

XmlElement f2= xmlDoc.CreateElement("f2");
XmlElement f3= xmlDoc.CreateElement("f3");
XmlElement f4= xmlDoc.CreateElement("f4");
XmlElement f5= xmlDoc.CreateElement("f5");
XmlElement f6= xmlDoc.CreateElement("f6");



نودها را مقدار دهی میکنیم

f2.InnerText = f2.Text.Replace(" ", "_");
f3.InnerText = f3.Text;
f4.InnerText = f4.Text;
f5.InnerText = f5.Text;
f6.InnerText = f6.Text;



نودها را اضافه میکنیم

f1.AppendChild(f2);
f1.AppendChild(f3);
f1.AppendChild(f4);
f1.AppendChild(f5);
f1.AppendChild(f6);




نودها را به نود اصلی append کرده و در نهایت فایل نهایی را ذخیره میکنیم.

xmlDoc.DocumentElement.AppendChild(f1);
xmlDoc.Save(Server.MapPath("xml.xml"));