查询像SQL一样的XML?

时间:2020-03-06 14:47:48  来源:igfitidea点击:

有没有查询XML SQL语法的框架,我非常厌倦遍历节点列表。
还是这只是一厢情愿的想法(如果不是白痴的话),并且由于XML不是关系数据库而肯定不可能实现吗?

解决方案

XQuery和XPath ...如果需要SQL结构,XQuery就是我们正在寻找的东西。

.Net Framework提供了LINQ来执行此操作,或者我们可以使用.Net System.Data命名空间从XML文件加载数据。

我们甚至可以创建在表之间具有联接的查询,等等。

例如,System.Data.DataTable提供了一种ReadXml()方法。

我们可以尝试LINQ to XML,但是它与语言无关。

SQL Server 2005在其本地xml数据类型上支持XML DML。

XQuery是最接近SQL的功能语言。 XPath是一种用于在文档中定位用作XSLT和XQuery的一部分的节点的表示法。

XML数据库(例如MarkLogic)充当XML数据的XQuery引擎,就像关系数据库充当关系数据的SQL引擎一样。

XQuery当然是前进的道路。这就是XML数据库(例如eXist和MarkLogic)所使用的。

在Java世界中,有几种在平面文件上运行XQuery的解决方案,最著名的是Saxon

对于.NET,没有太多可用的功能。微软确实有一个XQuery库,尽管它是从.NET 2中提取的,并且从未浮出水面。 XQSharp是本机.NET的替代产品,尽管当前仅发布了命令行版本。

这取决于我们要解决的问题。如果XML文件很大,则有时有必要使用诸如SAX解析器之类的文件逐节点遍历文件,否则我们将获得OutOfMemoryException甚至耗尽计算机上的虚拟内存。

但是,如果XML文件的预期大小相对较小,则可以只使用Linq之类的东西,也可以在此处尝试解释的答案中看到我的答案,即如何通过诸如yield return之类的结构使遍历节点变得更加容易。