我可以像这样读取数组中xml文件的输入:
<?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文件举例如下:
<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
或==
。
并将结果返回到数组或其他内容
答案 0 :(得分:2)
XPATH是我想要的。
例如,O'Reilly出版的所有书籍:
<?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更容易学习,但绝不是'看了几分钟而你已经完成',你真的要学习它如果您的需求比基本的基础更复杂。
答案 1 :(得分:0)
如果使用SimpleXML而不是DOMDocument解析文档,则可以使用xpath在文档中查找元素。我不知道这是否完全符合您的需求,但我之前做过一些相当复杂的动态路径(查询):