1

xmlリーダーを使用するときに結果を制限する最良の方法は何ですか?

私が試した以下のコードは機能していないようです。3つのノードをインポートするだけでなく、ファイル全体をインポートします。私は他のフォーラムを見てきましたが、この投稿からrrrfuscoとJose Vegaの功績により、これまでのコードは次のとおりです。

$i = 0;
$limit = 3;

while ($xmlReader->read()) {
if ($xmlReader->name == "product") {
$product = array();

if ($i == $limit) break;

while ($xmlReader->read()) {

$name = $xmlReader->name;

if ($name == "product") break;

  switch($name) {

    case $title:
    case $keywords:
    case $url:

    if (!isset($product[$i][$name]))
    $product[$i][$name] = $xmlReader->readString();


    break;
  }
}
$i++;

}

}
4

1 に答える 1

0

これが私の解決策でした。domxpathがそのトリックを行いました。この例では、結果を10に制限します。

$dom = new DOMDocument;
$dom->Load('http://domain.xml');
$xpath = new DOMXpath($dom);




for( $h=1; $h<10; $h++ ) {
$xc = $xpath->evaluate("count(//product[".$h."]/product_name)");
echo "<h1> Hotel" .$h. "</h1>";

$x1 = $xpath->query("//product[".$h."]/product_name");
$title = $x1->item(0)->nodeValue;
echo $title."<br /><br />";


    for( $i=1; $i<$xc+1; $i++ ) {

    $x2 = $xpath->query("//product[".$h."]/url[".$i."]");
    $url = $x2->item(0)->nodeValue;


    echo "<li>".$url."</li>";


    }



}
于 2012-10-27T14:43:08.310 に答える