2014-12-30 3 views
1

일부 XML 노드를 업데이트하려고합니다. 하지만 XML에 대해서는 경험이별로 없습니다. 나는 몇 가지 예를 읽을 수 있지만 내가 뭔가 잘못하고있는 중이 야특정 노드의 값을 얻는 방법

여기

내 XML은 ...

<?xml version="1.0" encoding="ISO-8859-9"?> 
<BANK_VOUCHERS> 
    <BANK_VOUCHER DBOP="INS" > 
     <DATE>30.12.2014</DATE> 
     <NUMBER>123</NUMBER> 
     <TYPE>3</TYPE> 
     <TRANSACTIONS> 
      <TRANSACTION> 
       <TYPE>1</TYPE> 
       <BANKACC_CODE>BANK1 TL-HESAP</BANKACC_CODE> 
       <ARP_CODE>CARI1_NR1</ARP_CODE> 

나는 ARP_CODE 값을 교체하려고하지만, XML 파일의 일부, 어떤 ARP_CODE이되지 않을 수도 있습니다 마디.

내 코드는 아래에 있지만 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

XDocument xdoc = XDocument.Load(filename); 
foreach (var element in xdoc.Elements("ARP_CODE")) 
    element.Value = "foo";  
xdoc.Save(filename.Substring(0, filename.LastIndexOf('.')) + "_upd.xml"); 
+5

'xdoc.Descendants ("ARP_CODE")','Elements'는 직접적인 자식만을 봅니다. – Jonesopolis

+0

고마워요. 대답으로 게시하면 답변으로 표시됩니다. –

답변

3

변경

xdoc.Elements("ARP_CODE") 

루프에서

xdoc.Descendants("ARP_CODE") 

합니다. Elements은 현재 노드의 직접적인 자식 만보고 반면 Descendants은 전체 트리를 검색합니다.