c# - 反序列化的 xml - 在不知道特定类型的情况下检查是否有子节点

标签 c# xml serialization

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

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

目前我只是将对象重新序列化为一个字符串,并在检查 HasChildNodes 属性之前将其加载到 XmlDocument 中,但是当我有数千个节点要检查时,这会占用大量资源并且速度很慢。

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

非常感谢:)

最佳答案

尝试使用 Linq2xml,它有一个名为 XElement(或 XDocument)的类,它比 XmlDocument 更容易使用。 像这样:

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

更少的代码,更流畅,更易读。 如果您已经将 xml 作为字符串,则可以将 Load 替换为 Parse 函数。

关于c# - 反序列化的 xml - 在不知道特定类型的情况下检查是否有子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499707/

相关文章:

c# - 如何在 C# (System.Xml.Serialization) 中反序列化 XML 命名空间?

java - 如何使用 java.xml.xpath 解析提供的 XML?

Java:哪些类必须实现可序列化

java - 嵌套对象和序列化

C# 和 SQL Server 2008 CLR 序列化问题

c# - Entity Framework - 为集合中的成员加载特定的导航属性

C# 识别 XML 文件中的父子元素

c++ - 在 C++ 中将大数据读写到自定义二进制文件

c# - 敏捷:模型的ATDD场景

c# - 使用 RestSharp 根据要求添加证书