我将小型 (2-10 KB) XML 文档作为输入传递给 WCF 服务。现在我有两个选项可以从传入的 XML 中读取数据值
- 反序列化为强类型对象并使用对象属性访问值
- 使用 XPath 访问值
哪种方法更快?一些统计数据来支持你的答案会很棒。
最佳答案
我会反序列化它。
如果您使用 xpath,您将反序列化(或“加载”)它到 XmlDocument 或其他东西。所以这两种解决方案都使用时间反序列化。完成此操作后,xpath 将变慢,因为解析该字符串、解析名称、执行函数等所花费的时间。另外,如果你使用 xpath,你就没有类型安全。您的编译器无法为您检查 xpath 语法。
如果您使用 XmlSerializer 和类,您将获得静态类型。真正快速地访问你的数据,如果你想用 xpath 查询它们,仍然有办法做到这一点。
另外,我想说的是,使用类可能会更容易理解您的代码。
唯一的缺点是 xml 必须始终符合相同的模式,但在您的情况下这可能不是真正的问题。
我希望你原谅没有统计数据,我认为没有例子的论据已经足够强大了。如果您想要最终答案,请尝试两种方法并准备好秒表。
关于c# - XPath 与反序列化 : which one is better in performance for read operations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277710/