2013-11-21 31 views
1

這絕對難倒了我。我有一個XML文件,它基本上是我的程序將使用在遊戲中的項目列表,每個項目都有一個關聯的ID,如使用隨機生成的整數解析XML文件

<Items> 
<Item ID ="1"> 
    <Name>Food</Name> 
    <Price>1 copper</Price> 
</Item> 
</Items> 

我怎麼能寫我的代碼,這樣我可以通過解析使用該隨機整數的XML?一旦找到該整數的正確ID,我將從XML文件中獲取元素,然後我的遊戲將使用它們。

感謝您提供任何幫助。

回答

1

使用LINQ到XML,你可以選擇具有ID屬性等於價值,你的整數id可變項元素:

var xdoc = XDocument.Load(fileName); 
var item= xdoc.Descendants("Item") 
       .FirstOrDefault(i => (int)i.Attribute("ID") == id); 

現在,如果使用指定的ID的元素存在(即項目不爲空),你可以寫它所有的元素值Dictionary<string, string>用元素名作爲鍵和元素值作爲值:設置字典的

if (item != null) 
{ 
    settings = item.Elements() 
        .ToDictionary(e => e.Name.LocalName, e => (string)e); 
} 

用法:

if (settings.ContainsKey("Name")) 
    name = settings["Name"]; // if id == 1 then name will be "Food" 
+0

雖然這與多個元素有關,但我不能擁有靜態元素,因爲每個ID都有不同的元素。 – Miguel

+0

@Miguel你是什麼意思的多元素? Id在這裏不是靜態的 –

+0

我的意思是在「Name =(string)i.Element(」Food「)中, Price =(string)i.Element(」Price「)」 – Miguel