限制要在php中解析与特定值匹配的XML项的数量

时间:2017-04-05 00:09:13

标签: php xml if-statement xml-parsing

我现在拥有的PHP只有一半工作,而且有点笨重。我希望从符合特定值类型的XML Feed中显示3个最新的新闻稿。我现在所看到的只是前三项,只是回应那些与价值相匹配的项目。我也很确定DOM对象不是最好的方法,但是让xparse正常工作的问题。对逻辑的一些帮助将不胜感激。

//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>";
    }
}

2 个答案:

答案 0 :(得分:0)

DOM能够在XML树上执行Xpath表达式以获取节点和标量值。使用<input type="file" onchange='startOrRestart(this)' /> - 而不仅仅是DOM方法。

但“最近的3个”不是过滤器。这是一种限制。您必须阅读每个项目并保持3“最新”或将所有项目读入列表,对其进行排序并从列表中获取前3个。

您可以在PHP中或使用XSLT执行此操作。

答案 1 :(得分:0)

这就是诀窍......

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

    }