[英]Linq (C#) : how to replace element in xml
我想问一下如何为专家替换xml中的元素。
xml是这样的,
资源:
<root>
<elements>
<element src="aaaa" />
<element src="a" />
<element src="aaa" />
</elements>
</root>
我想做的是:
恩。 aaaa => 4,a => 1,aaa => 3
结果:
<root>
<elements>
<element src="4" />
<element src="1" />
<element src="3" />
</elements>
</root>
这就是你要追求的吗?
var source = "<root><elements><element src=\"aaaa\"/><element src=\"a\"/>" +
"<element src=\"aaa\"/></elements></root>";
var doc = XElement.Parse(source);
foreach (var element in doc.Descendants("element"))
{
element.Attribute("src").Value = element.Attribute("src").Value.Length.ToString();
}
结果是:
<root>
<elements>
<element src="4" />
<element src="1" />
<element src="3" />
</elements>
</root>
与其他答案中给出的选项略有不同:
var attributes = doc.Descendants("element").Attributes("src");
foreach (var attribute in attributes)
{
attribute.Value = attribute.Value.Length.ToString();
}
这在IEnumerable<XElement>
上使用Attributes
扩展方法。 它使得代码比在循环中获取属性(IMO)稍微简单一点 - 当然比在赋值运算符的左侧和右侧获取它更简单。
(如果您想在查找元素时更具体,可以使用var attributes = doc.Root.Element("elements").Elements("element").Attributes("src");
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.