Вы используете LINQ to XML, который, возможно, является самым простым из API-интерфейсов .NET XML:
Для первой части: обновления значения атрибута вам необходимо получить XAttribute
для атрибута Name
и измените его значение:
custElement.Attribute("Name").Value = "aaabbbccc";
предполагая, что CustElement
является правильным элементом <Customer>
.
Для второй части: добавьте еще один элемент, чтобы вставить элемент после другого, используйте ссылку AddAfterSelf
метод XNode
(родительский элемент XElement
) , так что rootElement
является XElement
для элемента <Customers>
:
rootElement.LastNode.AddAfterSelf(new XElement("Customer",
new XAttribute("Id", 3),
new XAttribute("Name", "test")));
(Первый параметр конструктора XElement
— его имя, последующие — содержимое — либо атрибуты (как в данном случае), либо дочерние узлы. Есть несколько других способов сделать это: например, Add(object)
для добавления к элементу XElement
, обертывающему элемент <Customers>
, но на практике обычно имеют собственные предпочтения и придерживаются их ( небольшая согласованность, делающая код немного проще).
Для третьей части: получить клиента по идентификатору, мы можем просто использовать выражение понимания LINQ:
var matches = (from cust in customersElement.Elements("Customer")
where (int)cust.Attribute("Id") == theTargetId
select cust)
.Single();
(Это вызовет исключение, если будет найдено что-либо, кроме одного совпадения, используйте SingleOrDefault
, чтобы вернуть null
, если не найдено.)
person
Richard
schedule
22.08.2013