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>
如果我有一个类似于下面的 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>