2012-10-11 46 views
1

使用xml閱讀器限制結果的最佳方式是什麼?xml閱讀器限制結果

我試過的下面的代碼似乎沒有工作。它不是隻導入3個節點,而是導入整個文件。我看過其他論壇和用信貸rrrfusco和何塞·維加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

這裏是我的解決方案,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>"; 


    } 



}