LINQ, Модифициране на данни в XML
С LINQ към XML модифицирането на XML данни вече е по-лесно от всякога. Само с малък набор от методи можете да правите каквито искате промени. Независимо дали става въпрос за добавяне, модифициране или премахване на възли или елементи, винаги има метод, който може да свърши работата.
Както беше казано много пъти, в LINQ to XML, по-голямата част от времето се прекарва в работа с XElement обекти. Следователно повечето от дадените примери са свързани с обработка на артикули. Първо се обсъждат LINQ към XML класове, наследени от XNode, последвани от раздела за атрибутите.
Добавяне на възли
Този раздел за добавяне на нови възли към XML дърво започва с пример за основен код, показан по-долу:
Този код създава XML дърво с един служител. Ето резултата от него:
Описанията на различните методи за добавяне на възли ще започват с този основен код.
Въпреки че всички следващи примери добавят елементи, същата техника работи с всички LINQ към XML класове, наследени от XNode.
В допълнение към следните начини за добавяне на възли, не забравяйте да проверите Calling XElement.SetElementValue () в раздела XElement Child Objects по-късно в тази статия.
XContainer.Add () (AddLast)
Методът, който най-често ще се използва за добавяне на елементи към XML дървото, е Добавяне. Той добавя възел в края на списъка с дъщерни възли на посочения възел. По-долу е даден пример:
В горния код можете да видите, че основният код се допълва от код за добавяне на елемент Служител към елемента документ Служители. Тук, използвайки метода Element на документа, получавате елемент Employees и след това с помощта на метода Add добавяте нов елемент към списъка с неговите дъщери. Резултатът е показан по-долу:

Методът Add добавя новоизградения елемент Employee в края на списъка с дъщерни възли на елемента Employees. Както можете да видите, методът Add е също толкова гъвкав като XElement конструктора и следва същите правила за аргументи, позволявайки функционална конструкция.
XContainer.AddFirst ()
За да добавите възел в началото на списъка с дъщерни възли, използвайте метода AddFirst. Използвайки същия код от преди, с изключение на извикването на метода Add, получаваме кода по-долу:
Както можете да очаквате, новодобавеният елемент Служител ще се появи в главата на списъка с дъщерни възли на елемента Служители:

Можете ли да си представите по-лесен начин за манипулиране на XML? Едва ли.
XNode.AddBeforeSelf () и XNode.AddAfterSelf
За да вмъкнете възел на определено място в списъка с дъщерни възли, трябва да получите връзка или към предишния възел, или към възела непосредствено след точката на вмъкване и да извикате метода AddBeforeSelf или AddAfterSelf.
Като начална точка се използва XML дървото, създадено от примерния метод Add. В това дърво ще бъде вмъкнат нов възел между двата съществуващи елемента на служителя:

За да се освежи паметта на раздела LINQ to Objects за стандартните операции за заявки и да се интегрира тази информация с материала, обсъден в тази статия, елементът Служител, преди който трябва да се вмъкне нов, се търси с помощта на арсенал от операции LINQ.
Методът Element се потапя в документа, за да избере елемента Employees. След това се избират децата на служители на име Служител, които имат дете на име Първо име със стойността "Елена". Тъй като е известен само един елемент на служител, който отговаря на този критерий, и тъй като имате нужда от обект XElement, на който можете да извикате AddBeforeSelf, се извиква единична операция за извличане на обект на служител от тип XElement. Това дава препратка към елемента Служител, преди който искате да вмъкнете нов XElement.