2016-11-29 75 views
0

我無法從xml文件中刪除xml節點。我無法弄清楚我的代碼中存在什麼問題。我重視我的代碼xmlNode沒有刪除

class Program 
{ 
    static void Main(string[] args) 
    { 
     XmlDocument xDoc=new XmlDocument(); 
     xDoc.Load(@"C:\Users\MyUser\Desktop\Family.xml"); 

     //try 1 
     XmlNode firstNode=xDoc.SelectSingleNode("Apartments/Family[Father='Father1']"); 
     xDoc.LastChild.RemoveChild(firstNode); 
     xDoc.RemoveAll(); 


     //Try2 
     XmlNodeList nodeColl = xDoc.GetElementsByTagName("Apartments/Family"); 

     foreach (XmlNode xNode in nodeColl) 
     { 
      if (xNode["Father"].InnerText == "Father1") 
      { 
       xNode.ParentNode.RemoveChild(xNode); 
      } 
     } 
     // firstNode.ParentNode.RemoveChild(firstNode); 
    } 
} 

XML文檔格式是

<?xml version="1.0"?> 
<Apartments> 
<Family> 
<Father>Father1</Father> 
<Mother>Mother1</Mother> 
<Daughter>Daughter1</Daughter> 
<Son>Son1</Son> 
</Family> 
<Family> 
<Father>Father2</Father> 
<Mother>Mother2</Mother> 
<Daughter>Daughter2</Daughter> 
<Son>Son2</Son> 
</Family> 
<Family> 
<Father>Father3</Father> 
<Mother>Mother3</Mother> 
<Daughter>Daughter3</Daughter> 
<Son>Son3</Son> 
</Family> 
<Family> 
<Father>Father4</Father> 
<Mother>Mother4</Mother> 
<Daughter>Daughter4</Daughter> 
<Son>Son4</Son> 
</Family> 
</Apartments> 

請讓我知道我錯了。

+4

所以,你加載文件,解析文件,從解析樹中刪除一個元素,以及...你在哪裏寫新的XML迴文件? –

回答

1

修改後,您需要將更改保存到文件。

XmlDocument xDoc=new XmlDocument(); 
xDoc.Load(@"C:\Users\MyUser\Desktop\Family.xml"); 

XmlNodeList nodeColl = xDoc.GetElementsByTagName("Apartments/Family"); 

foreach (XmlNode xNode in nodeColl) 
{ 
    if (xNode["Father"].InnerText == "Father1") 
    { 
     xNode.ParentNode.RemoveChild(xNode); 
    } 
} 
// save the changes back to file 
xDoc.Save(@"C:\Users\MyUser\Desktop\Family.xml"); 
+0

謝謝..它的工作 – user1531912