2017-03-16 4 views
1

이 질문에 대한 답 : How to remove an xml element from file? 삭제하려는 요소 내의 정보를 알고 있으면 잘 작동하는 것으로 보입니다. 하지만 ASP.NET에서 OnItemDeleting 함수를 사용하여 ListView에서 항목의 선택된 인덱스 만 가질 수 있습니다. 내 C# 파일에서하위 인덱스를 기반으로 XML 요소를 제거하십시오.

이 내가 당신이 볼 수있는 두 가지 대안 (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(); 

, 나는 노드를 교체하는 방법을 잘 모릅니다 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> 

그래서 내가 옆에 버튼을 클릭하여 부동산 재벌 도널드 트럼프 항목을 제거 할 말을 할 수 있습니다. 필요하지 않음 귀하의 경우 반복 XmlNodeList에서

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

: selectedIndex의는 XlmNodeList 부모 노드가 문제를 해결에서 노드가 삭제 될 수 있음을 지정 2.

+0

그 대답을 많이 주셔서 감사합니다. 이것은 완벽하게 작동합니다! –

0

될 것이다.

은 @Azar 샤이 크가 제공하는 솔루션은 완벽했다, 내가 제안에도이 생각이

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

이 일을하려고합니다. –

관련 문제