0

これは、外部 xml ファイルからロードした xml の例です $data = file_get_contents($filename); $dom->loadXML($data);

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";

    }

タイトルと質問を取得できますが、選択肢は取得できません!

4

1 に答える 1

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";
}
于 2012-04-10T14:20:53.667 に答える