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을 사용하여 enum과 같은 기술을 비교하고 싶습니다. 그러나 이것은 매우 안전하지 않으며 인적 오류가 발생할 수 있습니다.
대안이 있습니까?