2011-08-11 109 views
0
public void AssignSkillFromXml(string xmlCharID, string skillNodeDir) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.Load(@"/home/holland/code/svn/chronos-/trunk/chronos/Lib/XmlFiles/Characters.xml"); 

    XmlNode node = doc.SelectSingleNode("Character/"+xmlCharID+"/Skills/"+skillNodeDir+"/text()"); 

    foreach(KeyValuePair<Skill, int> entry in skills) 
    { 
    bool nodeEqualsKey = 
     (node.Name.ToString() == entry.Key.ToString()); 

    Console.WriteLine(entry.Key); 

    if (nodeEqualsKey) 
    { 
     int val; 
     int.TryParse(node.Value, out val); 
     skills[entry.Key] = val; 
     Console.WriteLine(val); 
    } 
    } 
} 

如圖所示,我有一個方法,它被設計爲從xml節點分配一個值。該節點的名稱應該作爲字符串傳遞,並通過XmlNode指定的目錄進行訪問。獲取XML節點的字符串表示形式

從那裏,一個foreach循環遍歷字典,比較節點的名稱和字典的鍵,這恰好是一個枚舉。這將工作的唯一方法是如果枚舉可以被解析爲一個字符串,並與節點的名稱進行比較。我想用skillNodeDir來比較技能和枚舉,但這不是很安全,並且更容易出現人爲錯誤。

是否有替代方案?

回答

1

您的代碼沒有多大意義,您使用的是文本節點的Name,始終爲#text

我不確定這是您正在尋找的內容,但您可以使用Enum.Parse()從字符串中獲取枚舉值。正常的目錄索引應該可以和那一起工作。

相關問題