1
所以,我想讓自己熟悉XML。爲此,我創建了一個簡單的XML文件,然後創建了一個C#腳本來讀取該XML文件。現在一切都按預期工作,但代碼感覺很糟糕。需要幫助清理我的XML解析器代碼
我的XML看起來是這樣的:
<buildings>
<building>
<name>House</name>
<buildTime>5</buildTime>
<treeCost>100</treeCost>
<stoneCost>10</stoneCost>
<goldCost>10</goldCost>
</building>
<building>
<name>Tower</name>
<buildTime>5</buildTime>
<treeCost>10</treeCost>
<stoneCost>300</stoneCost>
<goldCost>50</goldCost>
</building>
</buildings>
而且我的C#代碼如下所示:
XDocument xmlDoc = XDocument.Load ("BuildingGame_Data/Buildings.xml");
var names = xmlDoc.Descendants("building").Descendants("name");
var buildTimes = xmlDoc.Descendants("building").Descendants("buildTime");
var treeCosts = xmlDoc.Descendants("building").Descendants("treeCost");
var stoneCosts = xmlDoc.Descendants("building").Descendants("stoneCost");
var goldCosts = xmlDoc.Descendants("building").Descendants("goldCost");
List<string> namesList = new List<string>();
List<int> buildTimesList = new List<int>();
List<int> treeCostsList = new List<int>();
List<int> stoneCostsList = new List<int>();
List<int> goldCostsList = new List<int>();
foreach (string n in names)
{
namesList.Add(n);
}
foreach (string b in buildTimes)
{
buildTimesList.Add(System.Convert.ToInt32(b));
}
foreach (string t in treeCosts)
{
treeCostsList.Add(System.Convert.ToInt32(t));
}
foreach (string s in stoneCosts)
{
stoneCostsList.Add(System.Convert.ToInt32(s));
}
foreach (string g in goldCosts)
{
goldCostsList.Add(System.Convert.ToInt32(g));
}
List<Building> buildings = new List<Building>();
for (int i = 0; i < namesList.Count; i++)
{
buildings.Add(new Building(namesList[i], buildTimesList[i], treeCostsList[i], stoneCostsList[i], goldCostsList[i]));
}
現在,我想辦法跳過,我將我所有的XML中間部分數據並將其存儲在不同的列表中。這似乎是一個不必要的步驟,但我無法以任何其他方式使其工作。
當我實現這個我得到一個錯誤說「類型'System.Collections.Generic.IEnumerable‘不包含'選擇的定義’,並沒有擴展方法選擇' 'System.Collections.Generic.IEnumerable '類型可以找到(你是否缺少使用指令或程序集引用?)「 –
2014-10-06 12:44:27
@JesperEvertsson您需要添加'使用System.Linq ;' – juharr 2014-10-06 12:47:37
謝謝,現在它按預期工作。現在唯一的問題是我不太瞭解代碼。你有什麼建議,我可以閱讀這個主題,並瞭解發生了什麼? – 2014-10-06 12:50:17