你好!
这是否可以使用一个节点的字符串值来告知使用 LINQ to XML 在另一个节点中呈现的字段类型?
例如:
<node>
<name>nodeName</name>
<type>string</type>
</node>
<node>
<name>0</name>
<type>bool</type>
</node>
<node>
<name>42</name>
<type>int</type>
</node>
提前致谢
最佳答案
好吧,鉴于类型信息仅在执行时已知,您不会得到一个很好的静态类型 API - 但您可以轻松地在 XElement 上编写一个扩展方法,它查找适当的子元素并返回 System.对象
。例如(未经测试):
public static object ParseValue(this XElement element)
{
XElement name = element.Element("name");
XElement type = element.Element("type");
// Insert error handling here :)
switch (type.Value)
{
case "int":
return int.Parse(name.Value);
case "string":
return name.Value;
case "bool":
return name.Value == "1"; // Or whatever
default:
throw new ArgumentException("Unknown element type " + type.Value);
}
}
这不是我设计数据格式的方式,但如果它被强加给你......
关于xml - LINQ 到 XML : parsing XML file which one of nodes presents type of another node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/293814/