2016-09-28 3 views
-1

트리 XML을 관리 할 수있는 treeview xml 프로그램을 만들었습니다. 이름과 경로별로 항목을 삭제하는 프로그램 기능이 필요합니다.동일한 경로와 이름을 가진 노드 삭제

예를 들어

:

<Main> 
<Set> 
    <MId>1</MId> 
    <RName> 
     <MetaData> 
      <PrdctName> 
       Test 1 
      </PrdctName> 
     </MetaData> 
    </RName> 
</Set> 
<Set/> 
<Set/> 
<Set> 
    <MId>2</MId> 
    <RName> 
     <MetaData> 
      <PrdctName> 
       Test 1 
      </PrdctName> 
     </MetaData> 
    </RName> 
</Set> 
</Main> 

그리고 난 이름이 같은 경로로 모든 XML 파일에서 "PrdctName"을 삭제합니다. 누구든지 나를 도울 수 있습니까?

편집 :

void deletebytag(TreeNodeCollection nodes) 
    { 
     List<TreeNode> nodee = new List<TreeNode>(); 

     foreach (TreeNode node in nodes) 
     { 
      if (node.Name == "au_id") 
      { 
       nodee.Add(node); 
      } 
      else 
      { 

       deletebytag(node.Nodes); 

      } 
     } 
     foreach (TreeNode node in nodee) 
     { 
      nodes.Remove(node); 

     } 

    } 

답변

-1

모든 목록 모음처럼 당신이 색인이 엉망이되지 않도록 처음에 마지막 항목에서 제거해야 할 객체 : 나는 그런 일하지만,이 나던 일을하려고합니다. 나는

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication16 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 

      List<XElement> prdctNames = doc.Descendants("PrdctName").ToList(); 

      for (int i = prdctNames.Count - 1; i >= 0; i--) 
      { 
       prdctNames[i].Remove(); 
      } 

     } 
    } 
} 
+0

감사합니다 아래 XML Liinq을 사용하지만, 나는 fuction를 필요 내 응용 프로그램에서 나는 단지를 XMLDocuments 라이브러리 –

+0

의 LINQ XML은 인터넷 도서관의 일부가 아닌 제 3 부 응용 프로그램을 사용하고 있습니다. 이전 xmlDocument 라이브러리보다 요소를 통해 열거하는 것이 더 효율적입니다. – jdweng

관련 문제