2010-01-10 2 views
2

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

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


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


Новая Prob lem The '\' character, hexadecimal value 0x5C, cannot be included in a name., но тот же файл.

ответ

5

Предположим, пусть переменная 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(); 

туАггау будет содержать { "если", "другое" , "является"}

UPDATE

Благодаря @SLaks комментарий, мы могли бы действовать ually вобще

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

Это действительно удивительно .. я должен научиться LINQ сейчас .. –

+1

Вы должны назвать 'myXml.Elements ("Ключевое слово")' – SLaks

0

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