У мене наступний 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);
}
}