2012-11-22 123 views
0

一個二級節點,我有以下XML文件:訪問XML使用LINQ to XML

<tree> 
    <branchs> 
     <branch id=1> 
      <apple id=1 color=green/> 
      <apple id=2 color=red/> 
     </branch> 
     <branch id=2> 
      <apple id=1 color=green/> 
      <apple id=2 color=red/> 
     </branch> 
    </branchs> 
</tree> 

我想SQL命令從分支ID 1訪問的Apple ID#1,和比改變顏色(第一次),然後能夠從這個分支中刪除這個蘋果。

我嘗試以下,除去一個蘋果,但沒有任何結果

XDocument doc = XDocument.Load(myxmlFile); 
var result = (from selectedApples in 
       (from selectedBranch in doc.Element("Branchs").Elements("Branch) 
       where selectedBranch.Attribute("id").Value == 1 
       select selectedBranch) 
       where selectedApples.Attribute("id").Value == 1 
       select selectedApples).ToList(); 

result.ToList().ForEach(apple => apple.Remove()); 

我想我犯了一個錯誤......我想太多我不那麼遠的解決方案...

有什麼幫助嗎?

回答

0

不知道這是最優化的解決方案......但它工作。

XDocument doc = XDocument.Load(myxmlFile); 
var results = from selectedApples in doc.Root.Element("branchs").Descendants() 
       where selectedApples.Attribute("id").Value == 1 
       select selectedApples.Elements("apple"); 

foreach(var result in results) 
    result.Where(a => a.Attribute("id").Value == 1).ToList().Foreach(a => a.Remove()); 

doce.Save(myxmlFile);