6

有没有查询 XML SQL 语法的框架,我真的厌倦了遍历节点列表。


或者这只是一厢情愿(如果不是白痴的话)而且肯定不可能,因为 XML 不是关系数据库?

4

7 回答 7

13

XQuery和 XPath... 如果需要 SQL 结构,XQuery 更适合您。

于 2008-09-26T17:47:07.090 回答
2

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

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

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

于 2008-09-26T17:47:23.033 回答
2

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

于 2008-09-26T17:47:53.220 回答
1

XQuery是一种最接近 SQL 的函数式语言。 XPath是一种用于在文档中定位节点的符号,该节点用作 XSLT 和 XQuery 的一部分。

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

于 2008-09-26T23:55:31.510 回答
1

这取决于您要解决的问题。如果 XML 文件非常大,有时必须使用 SAX 解析器之类的东西逐个节点遍历文件,否则您将收到 OutOfMemoryException 或者甚至会耗尽计算机上的虚拟内存。

但是,如果 XML 文件的预期大小相对较小,您可以简单地使用 Linq 之类的东西,也请参阅我的答案- 在这里我试图解释,如何使用像yield return这样的结构更容易地遍历节点。

于 2010-10-01T05:55:44.727 回答
0

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

于 2008-09-26T23:34:33.183 回答
0

XQuery 无疑是前进的方向。这就是eXistMarkLogic等 XML 数据库所使用的。

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

对于.NET,没有那么多可用的。Microsoft 确实有一个 XQuery 库,尽管它是从 .NET 2 中提取的,并且从未出现过。 XQSharp 是一个原生的 .NET 替代方案,尽管目前只发布了一个命令行版本。

于 2008-10-30T20:46:52.647 回答