tôi có mà tập tin xml:C#: Sửa đổi một nút xml
<?xml version="1.0" encoding="utf-8"?>
<reminders>
<reminder>
<Title>Alarm1</Title>
<Description>Desc1</Description>
<Time>03/07/2012 10:11AM</Time>
<snooze>1</snooze>
<repeat>None</repeat>
</reminder>
</reminders>
Và tôi muốn thay đổi innerText từ Alarm1 để giá trị khác vì vậy tôi đã viết rằng mã đó thực sự lặp lại toàn bộ nút.
XmlDocument xml = new XmlDocument();
xml.Load("0.xml");
XmlNodeList elements = xml.SelectNodes("//reminders");
foreach (XmlNode element in elements)
{
if (element.InnerText == "Alarm1")
{
XmlNode newvalue = xml.CreateElement("MODIFIED");
element.ReplaceChild(newvalue, element);
xml.Save("0.xml");
}
}
Và sau đó thử mã khác:
foreach (XmlElement element in xml.SelectNodes("//reminder"))
{
if (element.InnerText == "Alarm1")
{
XmlNode newvalue = xml.CreateElement("MODIFIED");
element.ReplaceChild(newvalue, element);
xml.Save("0.xml");
}
}
Nhưng cũng làm việc doesn `t ....
EDIT 1: [đặn ra một mã mới]
XmlDocument xml = new XmlDocument();
xml.Load("0.xml");
foreach (XmlElement element in xml.SelectNodes("//reminder"))
{
foreach (XmlElement element1 in element)
{
if (element.SelectSingleNode("//Title").InnerText == "Alarm1")
{
XmlNode newvalue = xml.CreateElement("MODIFIED");
element.ReplaceChild(newvalue, element1);
xml.Save("0.xml");
}
}
}
Nhưng nó đã làm cho Alarm1 trở thành
<MODIFIED />
EDIT 2: [Tôi giải quyết nó: D] Được rồi đây là đoạn code tôi có thể hình dung ra:
XmlDocument xml = new XmlDocument();
xml.Load("0.xml");
foreach (XmlElement element in xml.SelectNodes("//reminder"))
{
foreach (XmlElement element1 in element)
{
if (element.SelectSingleNode("//Title").InnerText == "Alarm1")
{
MessageBox.Show(element1.InnerText);
XmlNode newvalue = xml.CreateElement("Title");
newvalue.InnerText = "MODIFIED";
element.ReplaceChild(newvalue, element1);
xml.Save("0.xml");
}
}
}
I `ll thực sự đánh giá cao giúp bạn và cảm ơn.
sử dụng 'XDocument', không phải 'XmlDocument' – Jodrell
ví dụ của bạn và trả lời được lựa chọn không có gì để làm với LINQ – Jodrell
Nếu bạn đang đi với EDIT2: nhưng một 'ngắt;' trong 'if' để ngăn chặn vòng lặp không cần thiết – Jodrell