Php 如何查询多个XML文件?

Php 如何查询多个XML文件?,php,mysql,xml,xpath,xquery,Php,Mysql,Xml,Xpath,Xquery,我将得到成千上万个需要查询的XML文档。查询需要包含所有XML文件,而不仅仅是查询单个文件。例如,我可能需要: 从其为最新的XML文件返回值 对于这个场景,我可以使用什么技术或方法 循环遍历每个XML文件并执行XPath?这将过于昂贵且不可扩展 使用XML并将其插入到已建模为尊重XML模式的数据库中?然后只执行常规SQL查询以获取所需的数据 使用XML数据库 XQuery是一种选择吗 这需要成为PHP/MySQL解决方案的一部分。将XML文件插入到。您可以通过HTTP POST或针对RE

我将得到成千上万个需要查询的XML文档。查询需要包含所有XML文件,而不仅仅是查询单个文件。例如,我可能需要:

  • 从其
    为最新的XML文件返回
对于这个场景,我可以使用什么技术或方法

  • 循环遍历每个XML文件并执行XPath?这将过于昂贵且不可扩展
  • 使用XML并将其插入到已建模为尊重XML模式的数据库中?然后只执行常规SQL查询以获取所需的数据
  • 使用XML数据库
  • XQuery是一种选择吗

这需要成为PHP/MySQL解决方案的一部分。

将XML文件插入到。您可以通过HTTP POST或针对RESTAPI(取决于您的需要)执行PUT,轻松地从PHP插入这些内容。如果将它们插入相同的
集合
,则可以从PHP执行HTTP GET或POST发送一个XQuery,以查询来自同一集合的所有文档,例如:

collection("/db/your-collection-of-documents")//name[parent::element()/publish_date gt "2014-006-14"]

如果您可以更具体地介绍您的XML,我可以使用您需要使用的RESTURI和适当的XQuery来更新这个问题。

您需要多久更新一次?您是否得到一批需要处理的产品,或者这将持续进行?我个人会选择在数据库中对它们进行建模,并将它们接收到数据库中进行SQL操作。导入到数据库中,似乎是一个定期更新的好计划。XML文件将随着时间的推移而增长(因为更新不会覆盖旧的XML文件,新文件将随着时间的推移而添加,等等)。导入数据库似乎很痛苦。我需要理解模式并将其适当地转换为数据库术语——对于XML中的所有标记、属性,“1或更多”/“0或1”/“0或更多”规则,我认为这将是一次痛苦的经历。还有其他不那么痛苦的解决方案吗?我建议将数据放在一个面向文档的数据库中,比如Solr或CouchDB。这样可以查询XML文件吗?我还在研究XML文档。现在,我只是想弄清楚如何处理我将要得到的所有文档,以及如何获得我需要的数据。我会调查的。您认为将XML映射到RDBMS是个坏主意吗?将任何稍微复杂的XML映射到RDBMS几乎总是个坏主意!但是,如果您有非常简单的XML,它可能只表示一个或两个键/值表,那么它可能就足够简单了。。。假设XML的结构从未改变。为什么会像其他评论员所建议的那样存在Solr上的db或CouchDB?@StackOverdownEWBIE,Solr不是一个数据库,它是一个索引,它也不允许您执行XPath或XQuery来查询文档集合。CouchDB是一个文档数据库,但您需要将XML文档转换为JSON,并编写自己的应用程序来查询它们。CouchDB需要XML->JSON转换(我认为这并不简单)。eXist db只允许我存储XML文件并直接查询它们?现有数据库是否有更容易设置的替代方案?有没有一种方法可以只查询所有文件而不必将它们存储在各种数据库中?