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

Mir*_*vić 1 c# xml linq xelement

需要添加

XAttribute newatt = new XAttribute("TAG", value); 
Run Code Online (Sandbox Code Playgroud)

to XElement elem,但 theelem可能已经包含具有 name 的属性"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
Run Code Online (Sandbox Code Playgroud)

有没有更短的方法来完成这个任务,也许已经可用的XElement函数来检查现有的"TAG"可能(我知道可以将上面的代码片段包装成一个函数)?

Jon*_*eet 7

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

// Unconditional
elem.SetAttributeValue("TAG", value);
Run Code Online (Sandbox Code Playgroud)

(甚至创建XAttribute你自己也没有意义。)

文档

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