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