0

我有一个这样的 XML:

<?xml version="1.0" ?>
<rss version="2.0">
  <channel>
      <title>get_news_category</title>
    <item>
        <id>10502</id>
        <title>Cheesecake</title>
        <summary>SummaryBlahblah</summary>
    </item>
    <item>
        <id>13236</id>
        <title>Moto</title>
        <summary>summary blahblah</summary>
    </item>

我想将这些项目放入一个 php 数组中。

到目前为止我已经完成了:

    $nodes = $dom->getElementsByTagName('item')->item(0);

    $values = $nodes->getElementsByTagName("*");

    $articles = array();

    foreach ($values as $node) {
      $articles[$node->nodeName] = $node->nodeValue;
    }

    var_dump($articles);

它只在一个数组中返回我,即 1<item>元素。这是合乎逻辑的,因为我告诉了他->item(0)

那么如何选择所有项目以便将所有项目放入数组中?

谢谢。

4

2 回答 2

1

您需要迭代 $nodes。

$nodes = $dom->getElementsByTagName('item');
for ($i = 0; $i < $nodes->length; $i++)
{
     // Lets grab the node
     $values = $nodes->item($i)->getElementsByTagName("*");
}
于 2012-08-24T12:31:18.823 回答
1

采用$nodes->length

$dom = new DOMDocument();
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('item');

for($i=0; $i<$nodes->length; $i++){

    $values = $nodes->item($i)->getElementsByTagName("*");

    $articles = array();

    foreach ($values as $num => $node) {
        $articles[$i][$node->nodeName] = $node->nodeValue;
    }

    var_dump($articles);
}
于 2012-08-24T12:35:27.360 回答