Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c更新xml文件的属性值#_C#_Xml_Xpath_Xmldocument - Fatal编程技术网

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

C# 使用c更新xml文件的属性值#,c#,xml,xpath,xmldocument,C#,Xml,Xpath,Xmldocument,我有一个如下所示的xml 我想更新具有PARAMCODE=“cd3”的最后一个IP元素中参数的值属性。 IP元素的数量正在动态变化 SelectSingleNode(String)仅选择与XPath表达式匹配的第一个XmlNode。 我不知道选择最后一个IP元素的XPath表达式。请帮助我 <?xml version="1.0"?> <START> <TYPE CODE="1"> <D1> <G1>100202&

我有一个如下所示的xml

我想更新具有PARAMCODE=“cd3”的最后一个IP元素中参数的值属性。 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>

100202
01-10-2013 01:22:02      
//需要更新此元素的value属性的value
选择SingleNode(string)
不一定返回第一个
元素,这取决于您使用的XPath。您可以尝试简单地在XPath中添加
[last()]
,以获取最后匹配的元素,例如:

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

-1 12xx代表,但我们仍然必须告诉您如何提问?SelectSingleNode有什么不起作用?显示您使用的xpath的代码。@inferon:Sorry…我是c#和xml新手。