2014-06-29 223 views
-2

我有下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(); 
+1

是的,有幾種方法可以做到這一點。你有沒有嘗試過任何東西? – dotnetom

+0

任何問題,除了暗示*寫這個給我* –

+0

是的我試過了,我添加了我試過的基礎 – Dima

回答

0

你可以嘗試這樣的事:

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); 

     }  
    }