Получить значения атрибута 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., но тот же файл.


person Mohit Deshpande    schedule 10.01.2010    source источник


Ответы (2)


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

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

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

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);
person Ray Lu    schedule 10.01.2010
comment
Вы должны позвонить myXml.Elements("Keyword") - person SLaks; 10.01.2010

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

person Vijay Balkawade    schedule 10.01.2010