使用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++;
}
}
答案 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>";
}
}