1

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

xml是这样的,

来源:

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

我想做的是:

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

前任。aaaa => 4, a => 1, aaa => 3

  1. 替换 src 的值。

结果:

<root>
    <elements>
        <element src="4" />
        <element src="1" />
        <element src="3" />
    </elements>
</root> 
4

2 回答 2

3

这就是你所追求的吗?

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>
于 2012-05-26T08:09:47.323 回答
1

其他答案中给出的选项的轻微替代方案:

var attributes = doc.Descendants("element").Attributes("src");
foreach (var attribute in attributes)
{
    attribute.Value = attribute.Value.Length.ToString();
}

这使用了Attributes扩展方法IEnumerable<XElement>。它使代码比在循环中获取属性 IMO 稍微简单一些 - 并且肯定比在赋值运算符的左侧和右侧获取它更简单。

(如果您想在查找元素时更具体,可以使用var attributes = doc.Root.Element("elements").Elements("element").Attributes("src");.)

于 2012-05-26T08:21:56.523 回答