如何获取特定节点的值

时间:2014-12-30 13:30:37

标签: c# xml linq-to-xml

我正在尝试更新一些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>

我正在尝试REPLACE 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");

1 个答案:

答案 0 :(得分:3)

更改

xdoc.Elements("ARP_CODE")

xdoc.Descendants("ARP_CODE")
你的循环中的

Elements仅查看当前节点的直接子节点,而Descendants搜索整个树。