我有两个字符串。一个字符串具有 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/