首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询多个XML文件的方法是什么?

查询多个XML文件的方法是什么?
EN

Software Engineering用户
提问于 2014-06-18 22:05:23
回答 2查看 4.1K关注 0票数 2

我将接收数以万计的XML文件,随着时间的推移,XML文件将随着新文件的增加而继续增长。我需要能够作为一个整体来查询这些文件(比如SQL查询数据库中的所有记录)。针对这个问题,我应该考虑哪些技术和/或方法?

我觉得我应该调查一下XQuery。不过,我对它不太熟悉。

更新1:

我可能运行的示例查询:

  • 从/folder 1中的所有XML文件中返回所有产品代码、产品名称、产品说明/供应商id =x和商店id =y
  • 从/folder 2中的所有XML文件返回所有产品代码和产品价格,其中供应商id =x和商店id =y
  • 可能加入以上两个查询的结果,加入产品代码。
  • 由于上述两个查询的每个产品代码可能有多个结果,因此只能根据XML中的一些标记/属性获取最新的值。

更新2:

这篇文章似乎建议可以使用XQuery:http://www.ibm.com/developerworks/xml/library/x-xquerymaven/index.html?ca=。由于我正在实现LAMP解决方案,我认为可能有XQuery库可用。这是否意味着我不需要XML数据库来查询大量的XML文件?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2014-06-19 06:00:34

如果所有查询的性质都允许对XML文件进行顺序处理,则可以使用xpath/xslt或XQuery在不使用XML数据库的情况下这样做。例如:

  • 从/folder 1中的所有XML文件中返回所有产品代码、产品名称、产品说明/供应商id =x和商店id =y
  • 从/folder 2中的所有XML文件返回所有产品代码和产品价格,其中供应商id =x和商店id =y

对于任何优秀的xslt处理器,这些都是非常简单的xpath表达式。您只需遍历特定的文件,将每个文件加载到内存中,运行xpath查询并从每个文件收集结果( xpath不适合您)。XQuery似乎允许收集结果,但如下所示。

  • 可能加入以上两个查询的结果,加入产品代码。

这在xpath中是不容易实现的(至少不是很有效)。从您链接到的文章中,可以看到一个例子,即XQuery如何在没有数据库的情况下完成连接,但它需要将所有的XML文件加载到主内存中(当您有上万个文件时,这是非常不现实的)。但是,如果您从前两个查询中获得所有结果,则可以使用您的主机语言(在您的例子中是PHP)“连接”它们,但是您必须“手动编写程序”。然而,一个像样的XML数据库应该能够为您解决这些问题--不需要通过适当的索引将所有文件加载到内存中。

因此,这都归结为一个问题:您期望的查询有多少次,允许顺序处理的有多少次,以及有多少次不允许顺序处理。如果您期望的查询少于5个不同的查询,我可能不会使用数据库,而是尝试手动编写每个非顺序的要求。如果您期望有超过100个不同的查询,而且您甚至无法预见它们的外观,那么使用数据库可能是合适的(但是YMMV)。最后,你必须自己找出什么最适合你的需求。

票数 3
EN

Software Engineering用户

发布于 2014-07-17 20:47:11

我使用了eXist来使用xquery (http://exist-db.org)在不同的集合中存储和查询许多XML文件。与它的接口有很多种方法,并且已经证明它对我的应用程序是可靠的。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/245429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档