首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何搜索类似于MySQL查询的XML文件内容?

如何搜索类似于MySQL查询的XML文件内容?
EN

Stack Overflow用户
提问于 2011-07-20 00:45:32
回答 2查看 1.4K关注 0票数 0

我可以简单地读取数组中的xml文件的输入,如下所示:

代码语言:javascript
复制
  <?php
  $doc = new DOMDocument();
  $doc->load( 'books.xml' );

  $books = $doc->getElementsByTagName( "book" );
  foreach( $books as $book )
  {
  $authors = $book->getElementsByTagName( "author" );
  $author = $authors->item(0)->nodeValue;

  $publishers = $book->getElementsByTagName( "publisher" );
  $publisher = $publishers->item(0)->nodeValue;

  $titles = $book->getElementsByTagName( "title" );
  $title = $titles->item(0)->nodeValue;

  echo "$title - $author - $publisher\n";
  }
  ?>

并将xml文件转换为类似以下内容的示例:

代码语言:javascript
复制
  <books>
  <book>
  <author>Jack Herrington</author>
  <title>PHP Hacks</title>
  <publisher>O'Reilly</publisher>
  </book>
  <book>
  <author>Jack Herrington</author>
  <title>Podcasting Hacks</title>
  <publisher>O'Reilly</publisher>
  </book>
  </books>

但是,如果我想要在某个级别进行匹配,假设我想要找到匹配元素的数量,比如在mySql中有LIKE==

并将结果返回到数组或其他什么

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-20 00:48:33

我想XPATH就是你要找的东西。

例如,O‘’Reilly出版的所有书籍:

代码语言:javascript
复制
<?php
$doc = new DOMDocument();
$doc->load( '/tmp/books.xml' );
$x = new DOMXPath($doc);
foreach($x->query('//book[publisher="O\'Reilly"]') as $book){
    echo $book->ownerDocument->saveXML($book);
}
//If you only want the count:
echo $x->evaluate('count(//book[publisher="O\'Reilly"])');

我认为XPath比SQL更容易学习,但绝不是“看几分钟就完成了”,如果你的需求比最基本的东西更复杂,你真的必须学习它。

票数 2
EN

Stack Overflow用户

发布于 2011-07-20 00:48:59

如果使用SimpleXML而不是DOMDocument解析文档,则可以使用xpath查找文档中的元素。我不知道这是否完全符合您的需求,但我以前做过一些非常复杂的动态路径(查询):

http://php.net/manual/en/simplexmlelement.xpath.php

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

https://stackoverflow.com/questions/6750830

复制
相关文章

相似问题

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