使用c#更新xml文件的属性值

本文关键字:属性 文件 xml 更新 使用 | 更新日期: 2023-09-27 18:15:15

我有一个像下面这样的xml ..

我想更新PARAMETER元素的VALUE属性,在最后一个IP元素中具有PARAMCODE="cd3"IP元素的个数是动态变化的。

SelectSingleNode(String)只选择与XPath表达式匹配的第一个XmlNode。
我不知道选择最后一个IP元素的XPath表达式。请帮帮我。

<?xml version="1.0"?>
<START>
  <TYPE CODE="1">
    <D1>
      <G1>100202</G1>
      <G2>01-10-2013 01:22:02</G2>      
    </D1>
    <D2>
      <INSTPARAM CODE="cd1" VALUE="212.94" >
      </INSTPARAM>
      <INSTPARAM CODE="cd2" VALUE="212.72" >
      </INSTPARAM>     
    </D2>
    <D4 INTERVALPERIOD="15">
      <DATA DATE="01-10-2013">
        <IP INTERVAL="1">
          <PARAMETER PARAMCODE="cd3" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd4" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd5" VALUE="0" >
          </PARAMETER>          
        </IP>
        <IP INTERVAL="2">
           <PARAMETER PARAMCODE="cd3" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd4" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd5" VALUE="0" >
          </PARAMETER> 
        </IP>
        <IP INTERVAL="3">
           <PARAMETER PARAMCODE="cd3" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd4" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd5" VALUE="0" >
          </PARAMETER> 
        </IP>
        <IP INTERVAL="4">
           <PARAMETER PARAMCODE="cd3" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd4" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd5" VALUE="0" >
          </PARAMETER> 
        </IP>
        <IP INTERVAL="5">
           <PARAMETER PARAMCODE="cd3" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd4" VALUE="0">
          </PARAMETER>
          <PARAMETER PARAMCODE="cd5" VALUE="0" >
          </PARAMETER> 
        </IP>
        <IP INTERVAL="6">
           <PARAMETER PARAMCODE="cd3" VALUE="0" > //need to update the value of VALUE  attribute of this element
          </PARAMETER>
          <PARAMETER PARAMCODE="cd4" VALUE="0" >
          </PARAMETER>
          <PARAMETER PARAMCODE="cd5" VALUE="0" >
          </PARAMETER> 
        </IP>
      </DATA>
    </D4>
  </TYPE>  
</START>

使用c#更新xml文件的属性值

SelectSingleNode(string)不一定返回第一个<IP>元素,这取决于您使用的XPath。您可以尝试简单地在XPath中添加[last()]以获得最后匹配的元素,例如:

var ip = doc.SelectSingleNode("//IP[PARAMETER[@PARAMCODE='cd3']][last()]");
ip.FirstChild.Attributes["VALUE"].Value = "100";