2014-03-04 172 views
0

我想檢查是否存在具有某個值的xml元素。找到很多例子,但這些都有多個子節點,但我的不是。檢查xml元素是否存在(沒有子節點)

這是我的XML:

<?xml version='1.0' encoding='UTF-8'?> 
<data> 
<cocktail>1</cocktail> 
<cocktail>2</cocktail> 
<cocktail>3</cocktail> 
</data> 

C#:(變量name包含我要檢查它是否存在與否的值)

XDocument doc = XDocument.Load(stream, LoadOptions.None); 
bool b = (from cocktail in doc.Root.Elements("data") 
    where (bool)cocktail.Name.Equals(name) select cocktail).Any(); 
+0

所以你只是想知道一個「雞尾酒」元素是否存在?爲什麼不簡單地使用SelectXmlNodes(「.// cocktail」)並檢查計數? –

+0

好吧,也許我不清楚,但我想檢查是否存在「雞尾酒」元素,存儲在'name'中的'value' – JelleKerkstra

+0

使用'doc.Root.Elements(「data 「)',因爲doc.Root已經是'data'元素。剛剛被自己咬了一口。 –

回答

3

你的問題不完全清楚,但假設你想知道根元素是否有<cocktail>子值name,這將工作:

bool exists = doc.Root.Elements("cocktail") 
    .Where(element => element.Value == name) 
    .Any(); 
+0

我也喜歡用流利的API的工作,而不是查詢表達式 –