【问题标题】:Edit the same attribute of multiples nodes inside xml file编辑xml文件中多个节点的相同属性
【发布时间】:2014-05-18 23:41:15
【问题描述】:

我有一个这样的 xml 文件:

<Atletas>
<Atleta Id="0" Nombre="Eduardo"/>
<Atleta Id="1" Nombre="Daniel" />
<Atleta Id="2" Nombre="Carlos" />
<Atleta Id="3" Nombre="Gabriel" />
<Atleta Id="4" Nombre="Pedro"/>
<Atleta Id="5" Nombre="Juan"/>
</Atletas>

使用此查询删除一些节点后:

       XDocument doc = XDocument.Load(spath);
        try
        {
            var resultQuery = doc.Element("Atletas")
                   .Elements("Atleta")
                   .Where(x => (int?)x.Attribute("Id") == Convert.ToInt32(dGridTest.SelectedIndex.ToString()));

            if (resultQuery != null)
            {
                resultQuery.Remove();    
            }

            doc.Save(spath);

我有这个结果:

<Atletas>
<Atleta Id="0" Nombre="Eduardo"/>
<Atleta Id="1" Nombre="Daniel" />
<Atleta Id="4" Nombre="Pedro"/>
<Atleta Id="5" Nombre="Juan"/>
</Atletas>

问题是,我怎样才能编辑 Id=4 和 Id=5 的值以获得这个 xml:

<Atletas>
<Atleta Id="0" Nombre="Eduardo"/>
<Atleta Id="1" Nombre="Daniel" />
<Atleta Id="2" Nombre="Pedro"/>
<Atleta Id="3" Nombre="Juan"/>
</Atletas>

我正在使用 linq 和 wpf。

【问题讨论】:

    标签: c# xml wpf linq


    【解决方案1】:

    可以获取属性(移除元素后),然后使用XAttribute.SetValue方法

    var attributes = doc.Element("Atletas")
                     .Elements("Atleta")
                     .Select(x => x.Attribute("Id"));
    
    int i = 0;
    foreach(var attr in attributes)
           attr.SetValue(i++);
    
    doc.Save(spath);
    

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2020-09-22
      • 2013-01-08
      • 1970-01-01
      相关资源
      最近更新 更多