Страницы

Поиск по вопросам

вторник, 28 мая 2019 г.

Не могу разобраться с записью и чтением XML

Есть документ следующего вида:

value value value

value value value

Стоит задача записывать в определенную категорию пару key-value, и также читать из определенной категории такую пару. Я запутался в бесконечных XmlDocument, XPathNavigator и прочем, помогите пожалуйста разобраться.Язык С#.


Ответ

Если не хотите мучиться со всеми особенностями XML-DOM, то попробуйте использовать LiNQtoXML. Пространство имен System.Xml.Linq, Основной рабочий класс - XElement
Загрузка исходного Xml:
var myDoc = XElement.Load("myFile.xml");
Также можно использовать статический метод XElement.Parse(string), если в качестве источника используется строка.
Ищем нужный элемент:
var element = myDoc.Descendants("elementName").FirstOrDefault();
Читаем и пишем значение элемента:
var elValue = element?.Value; element.Value = "newValue";//элемент должен существовать
Читаем и пишем атрибут:
var attrValue = element?.Attribute("attrName")?.Value; element.Attribute("attrName").Value = "newAttrValue";
Добавим вложенный элемент c текстовым значением и атрибутом
element.Add(new XElement("subElement", "value", new XAttribute("attrName","AttrValue"));
Сохраним результат на диск
myDoc.Save("fileName")
Как видите все довольно прозрачно и понятно. XMLtoLiNQ полностью поддерживает классическую XML-DOM, но делает это изящнее чем более старый подход, реализованный в XmlDocument и сопутствующих классах.
Документация по ссылкам ниже содержит примеры в достаточном количестве чтобы разобраться и ссылки на описание сопутствующих классов. Класс XDocument Класс XElement

Комментариев нет:

Отправить комментарий