【问题标题】:Obtain string representation of XML node获取 XML 节点的字符串表示
【发布时间】:2011-08-11 20:28:08
【问题描述】:
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 指定的目录进行访问。

从那里开始,foreach 循环遍历字典,将节点的名称与字典的键(恰好是一个枚举)进行比较。唯一可行的方法是枚举可以被解析为字符串,并与节点的名称进行比较。我想只使用 SkillNodeDir 将技能本身与枚举进行比较,但这不是很安全,而且更容易受到人为错误的影响。

还有其他选择吗?

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    您的代码没有多大意义,您使用的是文本节点的Name,它始终是#text

    我不确定这是您要查找的内容,但您可以使用Enum.Parse() 从字符串中获取枚举值。然后正常的目录索引应该可以使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多