2016-12-14 2 views
1

Мне нужно проверить, например, если существует «Charrizard», я просматривал веб-страницы, но обнаружил только атрибуты xElement и примеры дочерних узлов.Как проверить, существует ли значение xElement?

<pokemons> 
    <pokemon> 
    <color>red</color> 
    <name>Charrizard</name> //the content is named value right ?? 
    </pokemon> 
</pokemons> 

я видел где-то начинается, как:

XDocument doc = XDocument.Load("pokemons.xml"); 
bool b = doc.Descendants(but don't know how to access the value.).. 

ответ

2
bool b = doc.Descendants("name").Any(x=> x.Value == "Charrizard"); 

Вы достигаете, что с помощью Enumerable.Any

Определяет, удовлетворяет ли какой-либо элемент последовательности заданному условию.

Вот полный пример dotNetFiddle

+0

Большое спасибо :) – tomyforever

+0

В 'х => x.Value', 'х' представляет 'имя'? – tomyforever

+0

@tomyforever Итак, с doc.Descendants («name») принимает все XElements вашего документа и помещает его в коллекцию IEnumerable. Если вы вызываете doc.Descendants («name»). ToList() создаст список с именем TagName. Метод любой, как я процитировал Определяет, удовлетворяет ли любой элемент последовательности условию. Таким образом, мое условие - это любой элемент из IEnumerable. имеет значение (поэтому значение узла) равно Charrizard, возвращает true, если не возвращает false. Вероятно, вы должны прочитать, что такое лямбда-выражение: https://msdn.microsoft.com/en-us/library/bb397687.aspx – mybirthname

Смежные вопросы