2017-03-16 56 views
1

我發現這個問題: How to remove an xml element from file? 這似乎工作正常,如果你知道你想刪除的元素內的一些信息。 但我有一個在ASP.NET中的OnItemDeleting函數,我只有(我認爲)ListView中項目的選定索引。刪除基於子索引的XML元素

在我的C#文件,我已經定義了兩個選擇(A和B),你可以看到,它看起來像這樣:

System.Diagnostics.Debug.WriteLine("IN ON ITEM DELETING."); 
     ListView1.SelectedIndex = e.ItemIndex; 

     XmlDocument xmldoc = new XmlDocument(); 
     xmldoc.Load(path); 

     XmlNodeList nodes = xmldoc.GetElementsByTagName("EmployeeInformation"); 
     for (int i = 0; i < nodes.Count; i++) 
     { 
      if (i == ListView1.SelectedIndex) 
      { 
       nodes[i].RemoveChild(nodes[i]); // Alt. A 
       xmldoc.RemoveChild(nodes[i]); // Alt. B 
       break; 
      } 
     } 
     xmldoc.Save(path); 
     BindDatalist(); 

如果我嘗試像A,我不知道如何更換節點在帶有XmlNodeList中的節點的XmlDocument中,如果我喜歡B,它只是不起作用,也是奇怪的。

的XML文件是這樣的:

<EmployeeInformation> 
    <Details> 
    <Name>Goofy</Name> 
    <Emp_id>Goooof</Emp_id> 
    <Qualification>BBA</Qualification> 
    </Details> 
    <Details> 
    <Name>Donald</Name> 
    <Emp_id>Duck</Emp_id> 
    <Qualification>MTech</Qualification> 
    </Details> 
    <Details> 
    <Name>Donald</Name> 
    <Emp_id>Trump</Emp_id> 
    <Qualification>MCA</Qualification> 
    </Details> 
</EmployeeInformation> 

因此,可以說我想按一下旁邊的按鈕將其刪除唐納德·特朗普的項目。將selectedIndex爲2。

回答

0

在不需要你的情況循環的XmlNodeList。

試試這個

XmlDocument doc = new XmlDocument(); 
      doc.Load(path); 

      if (ListView1.SelectedIndex < doc.DocumentElement.ChildNodes.Count) 
      { 
       doc.DocumentElement.RemoveChild(doc.DocumentElement.ChildNodes[ListView1.SelectedIndex]); 
       doc.Save(path); 
      } 
+0

非常感謝你的答案。這工作完美! –

0

指定該節點將被刪除從XlmNodeList父節點解決了這個問題:

ListView1.SelectedIndex = e.ItemIndex; 

XmlDocument xmldoc = new XmlDocument(); 
xmldoc.Load(path); 

XmlNodeList nodes = xmldoc.GetElementsByTagName("Details"); 
for (int i = 0; i < nodes.Count; i++) 
{ 
    if (i == e.ItemIndex) 
    { 

     nodes[i].ParentNode.RemoveChild(nodes[i]); 
     break; 
    } 
} 
xmldoc.Save(path); 
BindDatalist(); 
+0

即使這個工作,我建議,由@Azar謝赫所提供的解決方案是完美的。 –