Обновите атрибуты XML с помощью LINQ to XML - PullRequest
0 голосов
/ 11 марта 2011

У меня есть XML-файл, подобный следующему:

<URUN id="1" uName="KT-08" thumb="images_/berjer_/small_/17.jpg" image="images_/berjer_/17.jpg" desc="" />     
<URUN id="2" uName="KT-08" thumb="images_/berjer_/small_/18.jpg" image="images_/berjer_/18.jpg" desc="" />       
<URUN id="3" uName="KT-08" thumb="images_/berjer_/small_/19.jpg" image="images_/berjer_/19.jpg" desc="" />
<URUN id="4" uName="KT-08" thumb="images_/berjer_/small_/20.jpg" image="images_/berjer_/20.jpg" desc="" />

После удаления элемента для ex: id = 1, а после этого он выглядит как id = 2, id = 3 id = 4.Моя проблема в том, что я хочу обновить XML как id = 1, id = 2 и id = 3.Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Если я понимаю, что вы спрашиваете ...

int i = 1;
foreach (var e in elem.Elements("URUN")) {
  e.SetAttributeValue("id", i);
  i++;
}

Это предполагает, что вы уже удалили первый элемент URUN (с id = 1), и вы хотите обновить остальные, чтобы иметь последовательныйИдентификаторы, начинающиеся с 1.

0 голосов
/ 11 марта 2011
XElement urunlur = XDocument.Load("filepath.xml").Root;
var uruns = urunlur.Elements("URUN");

//the next line will throw an exception if 
//  (a) a URUN element exists without an id attribute
//  (b) there is no URUN element with an id = 1
//  (c) a URUN element exists with a non-integer id

uruns.Single(x => int.Parse(x.Attribute("id").Value) == 1).Remove();

var count = uruns.Count();
var sorted = uruns.OrderBy(x => x.Attribute("id").Value);
for(int i = 0; i<count;i++)
{
    sorted.ElementAt(i).SetAttributeValue("id",i+1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...