Если вы просто хотите очистить содержимое узлов:
// Load the XML document
XDocument doc = ...;
// Select the date nodes
var query = doc.Descendants()
.Where(e => e.Name.LocalName.StartsWith("date"));
// Clear the contents of each
foreach (var element in query)
{
element.SetValue(String.Empty);
}
// Optionally write it back
doc.Save(...);
Выход:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<main>
<videos>
<video>
<id>00000000-0000-0000-0000-000000000000</id>
<title>Video Title</title>
<videourl>http://sample.com</videourl>
<thumbnail>http://sample.com</thumbnail>
<dateCreated></dateCreated>
<dateModified></dateModified>
<Numbers>
<Number>28</Number>
<Number>78</Number>
</Numbers>
</video>
<video>
<id>00000000-0000-0000-0000-000000000000</id>
<title>Video Title</title>
<videourl>http://sample.com</videourl>
<thumbnail>http://sample.com</thumbnail>
<dateCreated></dateCreated>
<dateModified></dateModified>
<Numbers>
<Number>28</Number>
<Number>78</Number>
</Numbers>
</video>
</videos>
</main>
К сожалению, это изменит все узлы даты, независимо от того, где они находятся в вашем XML,Лично я предпочел бы использовать запрос XPath в приведенном выше примере, если бы была указана возможность очень четко указать, какие узлы следует обновить.То же самое можно сделать, используя чистый LINQ to XML , но это не так элегантно, как этот.
var xpath = "/main/videos/video/*[starts-with(name(.),'date')]";
var query = doc.XPathSelectElements(xpath);