繁体   English   中英

Linq(C#):如何替换xml中的元素

[英]Linq (C#) : how to replace element in xml

我想问一下如何为专家替换xml中的元素。

xml是这样的,

资源:

<root>
    <elements>
        <element src="aaaa" />
        <element src="a" />
        <element src="aaa" />
    </elements>
</root>

我想做的是:

  1. 找到src元素的值。
  2. 使用Convert(字符串值)方法将src的值转换为字符数。

恩。 aaaa => 4,a => 1,aaa => 3

  1. 替换src的值。

结果:

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM