/ / Видалити вузли з XML з атрибутом і простором імен - c #, xml, xml-parsing

Видалити вузли з XML з атрибутом і простором імен - c #, xml, xml-parsing

У мене наступний XML файл

<files>
<mainFile num="333">
<DE>
<file>
</file>
<file>
</file>
</DE>
</mainFile>

<mainFile num="444">
<DE />
</mainFile>

<mainFile num="555">
<DE>
<file>
</file>
<file>
</file>
<file>
</file>
</DE>
</mainFile>

<mainFile num="666">
<TLL>
</TLL>
</mainFile>

</files>

Я хочу видалити з кожного вузла <mainFile num="<number>"> все, що всередині <DE> - тільки якщо вона називається <DE>, у випадку інших вузлів всередині <TLL> у прикладі не торкайтеся до нього.

моя ідея - отримати щось на зразок цього:

<files>
<mainFile num="333"> </mainFile>
<mainFile num="444"> </mainFile>
<mainFile num="555"> </mainFile>
<mainFile num="666">
<TLL>
<TLL>
</mainFile>
</files>

Будь-які ідеї, як я можу його реалізувати?

Я намагався :

            var xmlString = XElement.Parse(xmlString);
xmlString.XPathSelectElements("//DE").Remove();

xmlString .Element("DE").Remove();

Відповіді:

0 для відповіді № 1

Ви можете спробувати щось на зразок цього:

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);

XmlNodeList nodeList;
XmlNode root = doc.DocumentElement;

nodeList=root.SelectNodes("descendant::mainFile");

foreach (XmlNode n in nodeList)
{
XmlNodeList des = n.SelectNodes("descendant::DE");
foreach (XmlNode de in nodeList)
{
de.ParentNode.RemoveChild(de);

}
}