چگونه مقدار یک فیلد را در چند فایل xml تغییر دهیم.

ROOT1

Administrator
#1
اگر فرض کنیم که فایل های XML شما، در D:\ قرار دارند، Extension اونها XML باشه و بخواهیم اینکارو با استفاده از C#‎‎ انجام بدیم و XML امون چنین ساختاری داشته باشه:

[TABLE]
[TR]
[TD="class: gutter"]1
2
3
4
5
6
7
8
9
[/TD]
[TD="class: code"]<?xml version="1.0" encoding="utf-8"?>
<records>
<record>
<place>Tehran</place>
</record>
<record>
<place>Tabriz</place>
</record>
</records>

[/TD]
[/TR]
[/TABLE]




اونوقت می تونیم براحتی با این function در هر 300 تا فایل تگ place ای value اش Tehran هستش رو پیدا کنیم و اون مقدار رو با Shiraz عوض کرده، فایل رو Overwrite کنیم:

[TABLE]
[TR]
[TD="class: gutter"]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[/TD]
[TD="class: code"]private void ReplaceTag()
{
string[] filenames = Directory.GetFiles("d:\\", "*.xml", SearchOption.TopDirectoryOnly);
foreach (string filename in filenames)
{
XDocument doc = XDocument.Load(filename);
XElement elm = doc.XPathSelectElement("//records/record/place[text()=\"Tehran\"]");
if (elm != null)
{
elm.Value = "Shiraz";
doc.Save(filename);
}
}
}

[/TD]
[/TR]
[/TABLE]




فراموش نکنید System.Xml.XPath namespace رو نیز به لیست using ها اضافه کنید.

موفق باشید.
 
بالا