【问题标题】:Update attribute value of an xml file using c#使用c#更新xml文件的属性值
【发布时间】:2014-07-29 04:47:54
【问题描述】:

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

我想更新最后一个 IP 元素内的 PARAMETER 元素的 VALUE 属性,该元素具有 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>

【问题讨论】:

  • -1 12xx rep 而且我们还要说你怎么问?
  • 什么不适用于 SelectSingleNode?显示您使用的 xpath 的代码..
  • @Infer-On: 抱歉...我是 c# 和 xml 的新手。

标签: c# xml xpath xmldocument


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 2015-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多