Linq to XML 查询

Linq to XML querying

如果我有一个类似于下面的 xml 文件,是否可以按名称查找特定元素并修改它们的值?

例如,考虑到我的树结构,有没有办法做类似的事情:

string xml = @"<root>  
      <para>  
            <r>  
              <s>
                27
              </s >
              <t size = 'M'>
                34
              </t >
              <u>
                <v>
                    65
                </v>
              </u>
            </r>  
            <r>  
            <u>
                <v>
                    65
                </v>
            </u>
            </r>  
            <r>  
                <t>bla</t>  
            </r>  
      </para>  
    </root>"

XElement doc = XElement.Parse(xml);

var result = doc.Elements("v")
           .ToList();

foreach (var el in result)
{
    el.value = "Something";
}

//and then save the modified tree

您可以使用 SetValue 来更新元素。在您的情况下,您还需要更新查询以获取 "v" 元素。

XElement doc = XElement.Parse(xml);

var result = doc.Descendants("v");

foreach (XElement item in result)
{

    item.SetValue("New Value");
}
var newXml = doc.ToString();

输出

<root>
  <para>
    <r>
      <s>
                27
              </s>
      <t size="M">
                34
              </t>
      <u>
        <v>New Value</v>
      </u>
    </r>
    <r>
      <u>
        <v>New Value</v>
      </u>
    </r>
    <r>
      <t>bla</t>
    </r>
  </para>
</root>