查询像SQL一样的XML?

Querying XML like SQL?

是否有用于查询XML SQL语法的框架,我非常厌倦遍历节点列表。

还是这只是一厢情愿的想法(如果不是愚蠢的话),并且由于XML不是关系数据库而肯定不可能实现吗?


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


您可以尝试使用LINQ to XML,但这与语言无关。


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

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

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


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

但是,如果XML文件的预期大小相对较小,则可以仅使用Linq之类的东西,也请参见我的回答-在这里,我试图解释如何通过诸如yield return之类的结构使遍历节点变得更加容易。铅>


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

诸如MarkLogic之类的XML数据库充当XML数据的XQuery引擎,就像关系数据库充当关系数据的SQL引擎一样。


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

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

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


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