xml阅读器限制结果

时间:2012-10-11 00:01:10

标签: xml limit xmlreader

使用xml阅读器时限制结果的最佳方法是什么?

我尝试过的下面的代码似乎没有用。它不是仅导入3个节点,而是仍然导入整个文件。我已经查看了其他论坛并获得了rrrfusco和Jose Vega的荣誉from this post这是迄今为止的代码:

$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++;

}

}

1 个答案:

答案 0 :(得分: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>";


    }



}