Удаление элемента из XML по дочернему элементу ID - C#
Формулировка задачи:
Здравствуйте,прошу помочь с проблемой.
Как сделать удаление тега и его дочерних тегов , через дочерний тег ID?
Например:
Как через C# удалить тег 2 и его дочерние теги , который имеет тег ID со значением 2?
<1>
<2>
<3></3>
<3></3>
<3></3>
<ID>1</ID>
</2>
<2>
<3></3>
<3></3>
<3></3>
<ID>2</ID>
</2>
</1>
Решение задачи: «Удаление элемента из XML по дочернему элементу ID»
textual
Листинг программы
[XmlRoot("E1")]
public class Root
{
[XmlElement("E2")]
public List<Child> Childs { get; set; }
[XmlIgnore]
public string File { get; set; }
public static Root Load(string path)
{
XmlSerializer deser = new XmlSerializer(typeof(Root));
using (var fs = new FileStream(path, FileMode.Open))
{
Root cat = (Root)deser.Deserialize(fs);
cat.File = path;
return cat;
}
}
public static void Save(Root db)
{
XmlSerializer ser = new XmlSerializer(typeof(Root));
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
using (var fs = new FileStream(db.File, FileMode.Create))
ser.Serialize(fs, db, namespaces);
}
}
public class Child
{
[XmlElement("E3")]
public string[] Arr { get; set; }
[XmlElement("ID")]
public string Id { get; set; }
}
Root r = new Root();
r.Childs = new List<Child>()
{
new Child() { Id = "1", Arr = new string[3] { "", "", "" } },
new Child() { Id = "2", Arr = new string[3] { "", "", "" } },
};
r.File = "test.xml";
Root.Save(r);
r.Childs.RemoveAll(c => c.Id == "2");
r.File = "test2.xml";
Root.Save(r);