c# - 读取 DataTable 中的 XML 数据和架构

标签 c# xml ado.net datatable

我有两个字符串。一个字符串具有 XML 数据,另一个字符串具有相应的 XML 模式。我正在尝试读取 DataTable 中的数据。看起来这是不可能的。我不想使用数据集。有没有一种方法可以将 XML 数据和架构组合到内存流中并读取?

最佳答案

简单地说,不,没有办法通过 DataTable 上的方法将 xml 直接加载到 DataTable 中,也没有办法直接从任意模式创建 DataTable。这样的操作必须通过DataSet来完成;否则,您最终会做一些非常复杂的解决方法。

您可以使用 xml 序列化应用一些技术,这些技术能够从先前序列化的 xml 重新创建数据集。但是,这不允许使用任意模式。

您还可以专门编写代码来加载您的 XML(通过 XDocument、XmlDocument 或 XmlTextReader)并即时创建一个 DataTable,但这并非易事,而且可能会花费您相当长的时间。这也是一种重新发明轮子。

从本质上讲,DataSet 是该层次结构中唯一具有处理 XML 方法的类,因为 Xml 可以包含任意数量的表。当您几乎不能对 XML 做出任何假设时,要处理最广泛的情况,就必须在该级别实现它。

您还可以考虑将 xml 简单地加载到 XDocument 中是否合适,然后使用 Validate 对其进行验证扩展方法,并使用Linq to Xml查询。

关于c# - 读取 DataTable 中的 XML 数据和架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8740040/

相关文章:

c# - Entity Framework 尝试添加数据库中已有表的迁移

c# - 在 clr 调用堆栈中看到接口(interface)是否正常?

java - fragment 中的 OnClickListener 不再起作用

Java 基本类型 XML 文本值

.net - 超过 100 个连接到 sql server 2008 处于 "sleeping"状态

c# - 尽管数据已添加到数据库中,但 ExecuteScalar() 返回 null

c# - 如何以货币格式显示数字

c# - BackgroundWorker 还需要调用Invoke 吗?

xml - 使用 Xpath 2.0 选择具有特定属性的唯一元素列表的 XPath

c# - 从 C# 的 .txt 文件中读取 SQL 查询