代码之家  ›  专栏  ›  技术社区  ›  AndrewC

反序列化XML-检查是否有子节点,而不知道特定类型

  •  2
  • AndrewC  · 技术社区  · 14 年前

    我已经将一个xml文件反序列化为一个c对象,并且有一个“对象”包含我从该文件中选择的特定节点。

    我需要检查这个节点是否有子节点。我不知道在任何给定的时间对象的具体类型。

    目前,我只是将对象重新序列化为一个字符串,并在检查haschildnodes属性之前将其加载到一个xmldocument中,但是,当我有数千个节点要检查时,这是非常耗费资源且速度缓慢的。

    有谁能想出更好的方法来检查我拥有的对象是否包含子节点?

    非常感谢:)

    2 回复  |  直到 14 年前
        1
  •  1
  •   Ami    14 年前

    尝试使用linq2xml,它有一个名为xelement(或xdocument)的类,比xmldocument更易于使用。 像这样的:

    XElement x = XElement.Load("myfile.xml");
    if (x.Nodes.Count() > 0)
    {
      // do whatever
    }
    

    更少的代码,更流畅,可读性更强。 如果XML已经作为字符串存在,则可以使用parse函数替换加载。

        2
  •  1
  •   Marc Gravell    14 年前

    我想您可以反转这个过程(查看所有未标记的公共成员/属性 [XmlIgnore] 不是 null ,并且没有 public bool ShouldSerialize*() 那回报 false 或者其他模式),但这似乎是 许多 工作…