Получить значения атрибутов xml в виде строки[]


Мой xml-файл имеет что-то вроде этого:
...
<Keyword name = "if" />
<Keyword name = "else" />
<Keyword name = "is" />
...

Итак, как я могу рекурсивно получить все значения атрибута name и добавить их к List<string> или string[]. Может быть, петля foreach?


Я следовал codemeit, и я продолжаю получать ошибку: Data at the root level is invalid. Line 1, position 1. Мой xml-файл
<KeyWords>
...
<KeyWord name = "if" />
...
</KeyWord>


Новая проблема The '' character, hexadecimal value 0x5C, cannot be included in a name. но тот же файл.

2 2

2 ответа:

Предположим, что переменная testXml равна следующей xml-строке

<Keywords>
 <Keyword name = "if" />
 <Keyword name = "else" />
 <Keyword name = "is" />
</Keywords>

Используйте XElement и LINQ для извлечения значений атрибутов name

var myXml = XElement.Parse(testXml );
var myArray = myXml.Elements().Where(n => n.Name.LocalName.Equals("Keyword"))
                    .Select(n => n.Attribute("name").Value)
                    .ToArray();

MyArray будет содержать {"if", "else", "is"}

Обновление

Благодаря комментарию @SLaks мы могли бы просто сделать

var myArray = myXml.Elements("Keyword").Attributes("name").Select(n => n.Value);

Можно использовать класс XmlNodeList. Вам нужно передать правильный XPATH, чтобы получить значения и перебрать список.