Получить значения атрибутов 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 ответа:
Предположим, что переменная 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, чтобы получить значения и перебрать список.