【问题标题】:C# How to change Xml node values using LinqC# 如何使用 Linq 更改 Xml 节点值
【发布时间】:2016-08-19 07:22:47
【问题描述】:

如何使用 Linq 将节点值 some value 替换为另一个值。 最后我需要一个带有替换值的字符串。

XML:

<ROOT>
  <A>
    <A1>
      <elementA1></elementA1>
    </A1>
    <A2>
      <elementA2>some value</elementA2>
    </A2>
  </A>
</ROOT>

C#:

XDocument xDoc = XDocument.Parse(@"<ROOT>
                                        <A>
                                          <A1>
                                            <elementA1></elementA1>
                                          </A1>
                                          <A2>
                                            <elementA2>Some value</elementA2>
                                          </A2>
                                        </A>
                                      </ROOT>");

xDoc.Elements("ROOT")
             .Elements("A")
             .Elements("A2")
             .Elements("elementA2")
             .Select(e => e.Value).ToList().ForEach(e => /* change the value */);

【问题讨论】:

    标签: c# xml linq


    【解决方案1】:

    您可以为此使用XPathSelectElement 方法:

    var newValue = "New value";
    
    var xDoc = XDocument.Parse(@"<ROOT>
        <A>
            <A1>
                <elementA1></elementA1>
            </A1>
            <A2>
                <elementA2>Some value</elementA2>
            </A2>
        </A>
    </ROOT>");
    
    xDoc.XPathSelectElement("/ROOT/A/A2/elementA2").SetValue(newValue);
    

    【讨论】:

      【解决方案2】:

      不要从所有节点中选择Value,只需获取节点本身并更改Value属性即可。

      【讨论】:

        猜你喜欢
        • 2019-12-03
        • 2012-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多