0
Установка атрибутов в XML-документе
Я пишу одну из своих первых программ на C#. Вот что я пытаюсь сделать:
- Открыть XML-документ
- Перейдите к части XML-дерева и выберите все дочерние элементы типа
<myType>
- Для каждого
<myType>
элемента измените атрибут (так<myType id="oldValue">
станет<myType id="newValue">
- Запишите этот измененный XML-документ в файл.
Я нашел XmlDocument.SelectNodes
метод, который принимает выражение XPath в качестве аргумента. Однако он возвращает XmlNodeList
. Я немного прочитал о разнице между узлом XML и элементом XML, и это, кажется, объясняет, почему нет XmlNode.SetAttribute
метода. Но есть ли способ использовать выражение XPath для получения списка XmlElement
объектов, чтобы я мог просмотреть этот список и установить id
атрибуты для каждого?
(Если есть другой способ попроще, дайте мне знать.)
Ответов (3)3
Решение
0
Я большой поклонник System.Xml.Linq.XDocument и предоставляемых им функций.
XDocument xDoc = XDocument.Load("FILENAME.xml");
// assuming you types is the parent and mytype is a bunch of nodes underneath
IEnumerable<XElement> elements = xdoc.Element("types").Elements("myType");
foreach (XElement type in elements)
{
// option 1
type.Attribute("id").Value = NEWVALUE;
// option 2
type.SetAttributeValue("id", NEWVALUE);
}
Вариант 1 или 2 работает, но я предпочитаю 2, потому что, если атрибут не существует, он будет создан.