如http://framework.zend.com/manual/1.12/en/zend.dom.query.html所述
一旦你有了一个文件,你可以使用query()
orqueryXpath()
方法;每个方法都将返回一个Zend_Dom_Query_Result
具有任何匹配节点的对象。
并进一步
如前所述,Zend_Dom_Query_Result
实现Iterator
和Countable
,因此可以在foreach()
循环中使用,也可以与count()
函数一起使用。
在这种情况下,各种Iterator 方法将返回PHP 的原生 DOMElement,这意味着您可以通过它的nodeValue
属性访问 Element 的文本内容。
假设 Result 对象中只有一项,请尝试
$parse->createImdb(
array(
'rating' => $rating->current()->nodeValue
'year' => $year->current()->nodeValue
)
);
如果您对使用迭代器感到不舒服,可以使用:
到,好吧,将迭代器复制到一个数组中,然后使用它,例如
$rating = iterator_to_array($rating);
$year = iterator_to_array($year);
$parse->createImdb(
array(
'rating' => $rating[0]->nodeValue
'year' => $year[0]->nodeValue
)
);
如果有多个结果,则将它们与MultipleIterator一起迭代
$ratingsAndYears = new MultipleIterator();
$ratingsAndYears->attachIterator($rating);
$ratingsAndYears->attachIterator($year);
foreach ($ratingsAndYears as $ratingAndYear) {
$parse = new Application_Model_Parse();
$parse->createImdb(
array(
'rating' => $ratingAndYear[0]->nodeValue
'year' => $ratingAndYear[1]->nodeValue
)
);
在旁注中,Zend_Dom_Query
它只是 PHP 的原生 DOM 扩展的一个薄包装器,如果您知道XPath,那么您真的不需要 W3 Selector 查询它提供的查询,并且可以单独使用 DOM 完成所有操作。