2017-04-05 51 views
0

我現在擁有的PHP只有一半工作,並且有點笨重。我正在尋找顯示匹配特定值類型的XML Feed中的3個最新新聞稿。我現在所擁有的僅僅是看前三項,只是迴應與價值相匹配的項目。我也很確定DOM對象不是這裏最好的方法,但有問題xparse正常工作。一些有關邏輯的幫助將不勝感激。限制在PHP中匹配特定值的XML項目數量

//create new document object 
$dom_object = new DOMDocument(); 
//load xml file 
$dom_object->load("http://cws.huginonline.com/A/138060/releases_999_all.xml"); 
$cnt = 0; 

foreach ($dom_object->getElementsByTagName('press_release') as $node) { 
    if($cnt == 3) { 
     break; 
    } 

    $valueID = $node->getAttribute('id'); 
    $valueType = $node->getAttribute('type'); 

    $headline = $dom_object->getElementsByTagName("headline"); 
    $headlineContent = $headline->item(0)->nodeValue; 

    $releaseDate = $dom_object->getElementsByTagName("published"); 
    $valueDate = $releaseDate->item(0)->getAttribute('date'); 

    $cnt++; 

    if ($valueType == 5) { 
     echo "<div class=\"newsListItem\"> <p> $valueDate </p> <h4>$headlineContent</h4><p></p></div>"; 
    } 
} 

回答

0

DOM有能力在XML樹上執行Xpath表達式來獲取節點和標量值。使用DOMXpath::evaluate() - 不僅僅是DOM方法。

但「3最近」不是過濾器。這是一種極限。您必須閱讀每個項目,並保持3「最新」或讀取所有的人都到一個列表,排序,並從列表中得到第3。

您可以在PHP或使用XSLT做到這一點。

0

這並獲得成功......

if ($valueType == 5) 
    { 
     if ($printCount < 3) { 
     echo "..."; 
     $printCount++; 
     } 

    } 
相關問題