【问题标题】:How can I add a new attribute to an existing xml node using wpf and c#?如何使用 wpf 和 c# 向现有 xml 节点添加新属性?
【发布时间】:2014-05-20 22:15:16
【问题描述】:

我正在尝试向现有 xml 节点添加新属性,我的 xml 如下所示:

<Atletas>
<Atleta Id="0" Nombre="TextBox4" Genero="Masculino" Edad="TextBox"  />
<Atleta Id="1" Nombre="TextBox345" Genero="Masculino" Edad="TextBox" />
<Atleta Id="2" Nombre="Daniel1" Genero="Masculino" Edad="TextBox"  />
<Atleta Id="3" Nombre="TextBox4" Genero="Masculino" Edad="TextBox" />
<Atleta Id="4" Nombre="Daniel2" Genero="Masculino" Edad="23" />
<Atleta Id="5" Nombre="Juan" Genero="Masculino" Edad="25" />
</Atletas>

我希望我的 xml 看起来像这样:

<Atletas>
<Atleta Id="0" Nombre="Daniel" Genero="Masculino" Edad="25" Peso="89" />
<Atleta Id="1" Nombre="John" Genero="Masculino" Edad="22"  />
<Atleta Id="2" Nombre="Tom" Genero="Masculino" Edad="21" Peso="78"/>
<Atleta Id="3" Nombre="Kerry" Genero="Masculino" Edad="18" />
<Atleta Id="4" Nombre="Peter" Genero="Masculino" Edad="23" Peso="76" />
<Atleta Id="5" Nombre="Juan" Genero="Masculino" Edad="25" />
</Atletas>

使用 linq,我如何编写查询以使用其 Id 作为标识符将新属性添加到选定节点?

【问题讨论】:

    标签: c# xml wpf linq


    【解决方案1】:

    使用XElement.Add 方法向元素添加内容(如属性):

    var xdoc = XDocument.Load(path_to_xml);
    
    var atleta = xdoc.Root.Elements("Atleta")
                     .FirstOrDefault(a => (int)a.Attribute("Id") == 3);
    
    atleta.SetAttributeValue("Edad", 21);
    atleta.Add(new XAttribute("Peso", 78));
    xdoc.Save(path_to_xml);
    

    执行此代码后,Atleta 元素的属性 Id 等于 3 将如下所示:

    <Atleta Id="3" Nombre="TextBox4" Genero="Masculino" Edad="21" Peso="78"/>
    

    推荐阅读:Programming Guide (LINQ to XML)。如果您对上述代码或需要完成的其他任务有任何疑问,请阅读本指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多