Hur gör jag för att ta bort noder som passar in i ett visst kriterium.....jag visar så är det lättare jag har denna XML: ok....jag har kommit så här långt <code>Remove nodes
<code>
<?xml version="1.0" encoding="utf-8"?>
<chatt>
<posts>
<post name="icaaq" timestamp="2002-02-08 07:04:15" message="fjuk is not a english word"/>
<post name="xheo" timestamp="2002-02-08 08:04:15" message="fjuk is not a greek word either"/>
</posts>
</chatt>
</code>
Om jag skulle vilja ta bort alla noder som är låt oss säga är 15 minuter gamla, kan jag då använda en XPath för att ta fram alla dem noderna eller måste jag loopa igenom hela XML filen och kolla "timestampen" för varje nod.Sv: Remove nodes
<code>
public void DeletePost(int Minutes)
{
string minutesadded = Regex.Replace(DateTime.Now.AddMinutes(Minutes).ToString(), @"(-|\+|:|\s)", "");
XmlNode postsNode = _doc.SelectSingleNode("/chatt/posts");
XmlNodeList list = postsNode.SelectNodes("post[number(translate(@timestamp,'-: ', '')) < number('"+minutesadded+"')]");
foreach (XmlNode node in list)
{
postsNode.RemoveChild(node);
}
_doc.Save(chatt);
}
</code>
men problemet är att alla poster försvinner........vad ska jag göra för att få så att bara dem poster som är x(Minutes) minuter gamla försvinner??Sv: Remove nodes
public void DeletePost(int Minutes)
{
string minutesadded = DateTime.Now.AddMinutes(Minutes).ToString("yyyyMMddHHmmss");
XmlNode postsNode = _doc.SelectSingleNode("/chatt/posts");
XmlNodeList list = postsNode.SelectNodes("post[number(translate(@timestamp,'-: ', '')) < number('"+minutesadded+"')]");
foreach (XmlNode node in list)
{
postsNode.RemoveChild(node);
}
_doc.Save(chatt);
}
</code>
och
<code>
Chatt chatt = new Chatt();
chatt.DeletePost(-2);
</code>
det var att det skulle vara ett negativt nummer som spökade....