xml - LINQ 到 XML : parsing XML file which one of nodes presents type of another node

标签 xml linq parsing

你好!

这是否可以使用一个节点的字符串值来告知使用 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/

相关文章:

javascript - LINQ-For-Javascript 嵌套数组

c# - LINQ 和字典线程安全

java - 获取节点及其具体子节点

c# - 在客户端和服务器之间保护用户名/密码的最佳实践

java - 如何使用 DOM 解析此 XML 并将其内容放入哈希表中?

C#:比较两个 IEnumerables 的内容

python - 如何分析包含 VARIABLE=SOMEVALUE 形式表达式的行的文本文件

c# - 当文件名有点 "free form"时,有没有办法将文件名一致地转换为日期时间值?

java - JSON + Java 入门遇到问题

c# - 是否可以将数据绑定(bind)到内存中的对象并允许数据绑定(bind)到 XML