我现在拥有的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>";
}
}
答案 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++;
}
}