使用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>
SelectSingleNode(string)
不一定返回第一个<IP>
元素,这取决于您使用的XPath。您可以尝试简单地在XPath中添加[last()]
以获得最后匹配的元素,例如:
var ip = doc.SelectSingleNode("//IP[PARAMETER[@PARAMCODE='cd3']][last()]");
ip.FirstChild.Attributes["VALUE"].Value = "100";