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ループは辞書を繰り返し、ノードの名前を辞書のキーと比較します。これはenumになります。これがうまくいく唯一の方法は、列挙型を文字列として解析し、ノードの名前と比較できるかどうかです。 skillNodeDirを使用してスキルを列挙型と比較したいのですが、これはあまり安全ではなく、人為的エラーの影響をより受けます。
代替手段はありますか?