2012-04-10 13 views
0

ここに、外部XMLファイルからロードするxmlの例があります。 $ data = file_get_contents($ filename); $ dom-> loadXML($ data);PHPを使用してXMLデータを解析する

phpを使って、タイトル、質問、および各質問の選択肢を得るためにこのxmlを歩きたいと思います。

<questions> 
    <record topic = "classic video games"> 
     <title>Centipede</title> 
     <question>How many shots does it take to destroy a mushroom?</question> 
     <choices> 
      <choice correct="no" votes="0">1</choice> 
      <choice correct="no" votes="0">2</choice> 
      <choice correct="no" votes="0">3</choice> 
      <choice correct="yes" votes="0">4</choice> 
     </choices> 
    </record> 
    <record topic = "classic video games"> 
     <title>Quake</title> 
     <question>What is the name of the most powerful weapon in Quake?</question> 
     <choices> 
      <choice correct="no" votes="0">gauntlet</choice> 
      <choice correct="no" votes="0">machine gun</choice> 
      <choice correct="yes" votes="0">BFG2000</choice> 
      <choice correct="no" votes="0">rocket launcher</choice> 
      <choice correct="no" votes="0">railgun</choice> 
     </choices> 
    </record> 
</questions> 

私は私の結果はこのようになりたい:ここ

Title = Centipede 

Question = How many shots does it take to destroy a mushroom? 

I. 1 
II. 2 
III. 3 
IV. 4 

は私の試みです:

$dom->loadXML($data); 


    $all_records = $dom->getElementsByTagName("record"); 
     $all_choices = $dom->getElementsByTagName("choices"); 
     foreach($all_records as $record){ 
     $question = $record->getElementsByTagName("question")->item(0)->nodeValue; 
     $title = $record->getElementsByTagName("title")->item(0)->nodeValue; 
     echo "<h2> Title=$title</h2>"; 
       echo "<h5><em>Question=$question</em></h5>"; 
       echo "<li>". $all_choices->getElementsByTagName("choice")->nodeValue."</li>\n"; 

     echo "</ul>\n"; 
     echo "</div>\n"; 

    } 

私はタイトルと質問ではなく、取得することができますよ選択肢!

答えて

0

は、あなたは、各レコード検査として内部ループを使用してchoicesセットをフェッチする必要があります:私はそれを修正し、元に戻すの答えに来た

<?php 

$dom->loadXML($data); 

$all_records = $dom->getElementsByTagName("record"); 
foreach($all_records as $record) { 
    $question = $record->getElementsByTagName("question")->item(0)->nodeValue; 
    $title = $record->getElementsByTagName("title")->item(0)->nodeValue; 
    $choices = $record->getElementsByTagName('choice'); 

    echo "<h2> Title=$title</h2>"; 
    echo "<h5><em>Question=$question</em></h5>"; 

    echo '<ol class="choices">'; 
    foreach ($choices as $choice) { 
     echo "<li>" . $choice->nodeValue . "</li>\n"; 
    } 
    echo "</ol>"; 

    echo "</div>\n"; 
} 
+0

を、私はあなたを見つけました。どうもありがとう! – Timmy

+0

こんにちは、私は早く答えなかった:) –

関連する問題