http://framework.zend.com/manual/1.12/en/zend.dom.query.htmlで説明されているように
ドキュメントを作成したら、query()
またはqueryXpath()
メソッドを使用できます。各メソッドはZend_Dom_Query_Result
、一致するノードを持つオブジェクトを返します。
そしてさらに
前述のように、は と のZend_Dom_Query_Result
両方を実装Iterator
しているため、関数だけでなくループでCountable
も使用できます。foreach()
count()
この場合、さまざまなIterator メソッドがPHP のネイティブ DOMElementsを返します。つまり、要素のテキスト コンテンツにそのプロパティを介してアクセスできますnodeValue
。
Result オブジェクトにアイテムが 1 つしかないと仮定して、試してください。
$parse->createImdb(
array(
'rating' => $rating->current()->nodeValue
'year' => $year->current()->nodeValue
)
);
Iterator の使用に不安がある場合は、次を使用できます。
まあ、イテレータを配列にコピーしてから、代わりにそれを使用します。
$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 セレクターのクエリは実際には必要なく、DOM だけですべて実行できます。