如果元素中存在属性,则将XAttribute添加到XElement

时间:2017-07-19 10:34:58

标签: c# xml linq xelement

需要添加

XAttribute newatt = new XAttribute("TAG", value); 

XElement elem,但elem可能已包含名称为"TAG"的属性,因此elem.Add(newatt);会出错。我目前使用的解决方法是首先检查:

if (elem.Attribute("TAG") != null) // check if attribute exists                        
    elem.SetAttributeValue("TAG", newatt.Value.ToString()); // Attribute exists
else
    elem.Add(newatt); // Attribute does not exist

是否有更短的方法来执行此任务,可能已经可用的XElement函数可以检查现有的"TAG"(我知道可以将上面的代码段包装到函数中) ?

1 个答案:

答案 0 :(得分:4)

在使用SetAttributeValue之前,您无需检查该属性是否已存在。只是:

// Unconditional
elem.SetAttributeValue("TAG", value);

(即使自己创建XAttribute也没有意义。)

来自documentation

  

将值分配给具有指定名称的属性。如果不存在具有指定名称的属性,则添加新属性。如果值为null,则删除具有指定名称的属性(如果有)。