Как и другие, я бы предложил использовать LINQ to XML - но я не думаю, что здесь есть необходимость использовать XPath. Вот простой способ вернуть все имена ключевых слов в файле:
static IEnumerable<string> GetKeywordNames(string file)
{
return XDocument.Load(file)
.Descendants("Keyword")
.Attributes("name")
.Select(attr => attr.Value);
}
Красиво и декларативно :) 1004 *
Обратите внимание, что если вы хотите использовать результат более одного раза, вы должны вызвать ToList()
или ToArray()
, иначе он будет каждый раз перезагружать файл. Конечно, вы можете изменить метод, чтобы он возвращал List<string>
or string[]
, добавив соответствующий вызов в конец цепочки вызовов метода, например,
static List<string> GetKeywordNames(string file)
{
return XDocument.Load(file)
.Descendants("Keyword")
.Attributes("name")
.Select(attr => attr.Value)
.ToList();
}
Также обратите внимание, что этот просто дает вам имена - я бы ожидал, что вы захотите узнать другие детали об элементах, и в этом случае вы, вероятно, захотите что-то немного другое. Если окажется, что вам нужно больше, пожалуйста, дайте нам знать.