对元素的输出进行排序


Order output of elements

我为我写了这个RSS阅读器,它实际上工作得很好,但不幸的是我不明白PHP如何排序输出。有人可以帮我吗?

我的PHP代码:

$reader = new XMLReader();
$reader->open("articles.xml");
while ($reader->read())
{
  if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title")
    echo "<h1>Pøehled aktuálních zpráv ze serveru
      <a href='" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "'>" .
      $title . "</a></h1>";
  // obsluha názvu kanálu
  if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link")
    $title = htmlspecialchars($reader->readString());
  if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "article")
  {
    echo "<dl>";
    while ($reader->read())
    {
      if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link")
                echo "<dt><a href='" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "'>" .
                    $title . "</a></dt>";
      if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title")
                $title = htmlspecialchars($reader->readString());
      if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "description")
                echo "<dd>" .  htmlspecialchars($reader->readString()) . "</dd>";
    }
    echo "</dl>";
  }
}

其输出为 1.它显示带有DESC的该部分,然后显示作为链接的标题。 但它应该是对立的顺序。

这可能是非常愚蠢的事情,但我查看此代码太久了,找不到问题所在。

如果有人能帮助我,我会非常高兴。谢谢

锚标记<a>的 echo 语句是错误的。我把$title换成了htmlspecialchars($reader->readString(), ENT_QUOTES).

这应该是您想要的:

$reader = new XMLReader();
$reader->open("http://blog.omer.london/feed/");
$title = '';
while ($reader->read()) {
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title") {
        echo "<h1>Pøehled aktuálních zpráv ze serveru
      <a href='" . $title . "'>" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "</a></h1>";
    }
    // obsluha názvu kanálu
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link") {
        $title = htmlspecialchars($reader->readString());
    } elseif ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "article") {
        echo "<dl>";
        while ($reader->read()) {
            if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "link") {
                echo "<dt><a href='" . $title . "'>" . htmlspecialchars($reader->readString(), ENT_QUOTES) . "</a></dt>";
            } elseif ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "title") {
                $title = htmlspecialchars($reader->readString());
            } elseif ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "description") {
                echo "<dd>" . htmlspecialchars($reader->readString()) . "</dd>";
            }
        }
        echo "</dl>";
    }
}

以下是 HTML 输出:http://jsfiddle.net/0qt773eb/