2011-08-07 4 views
0

私はSimpleXMLを使用して、自分のウェブサイトのニュースとイベントを含むXMLファイルを読み込んでいます。 foreachを使用して、定義済みのxmlタグをループします。しかし、私のウェブサイトでは、自分のXMLのルートの子である3つのニュースとイベントだけを扱う必要があります。私は私のPHPファイルSimpleXML特定のチャイルド数を読み取る

foreach($xml->newsevent as $newsevent) 
{ 
echo "$newsevent->date"; 
echo "$newsevent->description"; 
} 

からforeachループを使用してい

<list> 
<newsevent> 
<date>AUG 7</date> 
<description>news</description> 
</newsevent> 
<newsevent> 
<date>AUG 6</date> 
<description>news/description> 
</newsevent>  
<newsevent> 
<date>AUG 5</date> 
<description>news</description> 
</newsevent> 
</list> 

XMLファイルは、ニュースやイベント用のデータベースとして扱われ、明らかに記録がたくさんあるだろう。どのように私は特定の数のnewseventsを表示することができますか?あなたが十分な回数ループしてきたとき

答えて

0

あなたはちょうどあなたがループしました回数を追跡し、ループを終了し、いくつかのカウンタ変数を追加することができます。

$counter = 0; 
foreach($xml->newsevent as $newsevent) 
{ 
    echo "$newsevent->date"; 
    echo "$newsevent->description"; 
    $counter++; 
    if ($counter >= 3) { 
     break; 
    } 
} 


それでも点に注意してください、とのことSimpleXMLDOMDocumentと同じ)の場合、XMLドキュメント全体が解析され、読み込む必要のある項目の数にかかわらず、メモリにロードされます。

文書が本当に大きければ、そのことを防ぐことができます。つまり、DOMパーサーを使用せず、SAXを使用することです。

PHPでは、XMLReaderクラスを見てみましょう。

+0

ありがとう – user874737

関連する問題