У меня есть еще одна задача, которую я не могу выполнить: я должен анализировать XML с this site, удалять все узлы, у которых нет «ВИДЕО» от их имени, а затем сохранить его другому XML-файл. У меня нет проблем с чтением и письмом, но удаление затрудняет мне. Я попытался сделать узел -> Parent Node -> дочерний узел с работой Обращаясь, но это не казалось полезным:Удаление узла XML
static void Main(string[] args)
{
using (WebClient wc = new WebClient())
{
string s = wc.DownloadString("http://feeds.bbci.co.uk/news/health/rss.xml");
XmlElement tbr = null;
XmlDocument xml = new XmlDocument();
xml.LoadXml(s);
foreach (XmlNode node in xml["rss"]["channel"].ChildNodes)
{
if (node.Name.Equals("item") && node["title"].InnerText.StartsWith("VIDEO"))
{
Console.WriteLine(node["title"].InnerText);
}
else
{
node.ParentNode.RemoveChild(node);
}
}
xml.Save("NewXmlDoc.xml");
Console.WriteLine("\nDone...");
Console.Read();
}
}
Я также попробовал метод RemoveAll, который не работает, как хорошо, потому что это удаляет все узлы, не удовлетворяющие условию «ВИДЕО».
//same code as above, just the else statement is changed
else
{
node.RemoveAll();
}
Не могли бы вы помочь мне, пожалуйста?
Большое спасибо ... Я не работал с Linq много, до сих пор, но это кажется довольно простым и довольно мощным. Ответ принят. – Storm
Могу ли я задать еще один вопрос? Я попытался изменить запись в консоль, но почему-то это не работает ... 'foreach (элемент var в xDoc.XPathSelectElements (" // item [(start-with (title, 'VIDEO:'))] "). ToList()) { Console.WriteLine ((string) item.Attribute ("title")); } ' – Storm
@Storm' title' не является атрибутом * элемента. Это субэлемент. Попробуйте элемент item.Element («title»). Значение « – I4V