2014-10-02 144 views
0

请问如何读取和解析包含属性的XML文件。解析具有属性的XML文件

XML文件是这样的,有很多“问题”节点

<questions> 
    <description> 
     Here goes description.... 
    </description> 
    <evaluation_order> 
     1 
    </evaluation_order> 

    <question text="question1"> 
     <answer score="10">answer 1</answer> 
     <answer score="20">answer 2</answer> 
     <answer score="30">answer 3</answer> 
     <answer score="40">answer 4</answer> 
    </question> 

    <question text="question2"> 
     <answer score="1">answer 5</answer> 
     <answer score="2">answer 6</answer> 
     <answer score="3">answer 6</answer> 
     <answer score="4">answer 7</answer> 
    </question> 
</questions> 

和PHP代码如下所示:

<?php 

$questions = simplexml_load_file('xml/workshop_evaluation_questions_1.xml'); 

$questions = json_encode($questions); 
$questions = json_decode($questions, TRUE); 

$name = $questions['description']; 
//echo $name; 
//echo '<br>'; 

$evaluation_order = $questions['evaluation_order']; 
//echo $evaluation_order; 
//echo '<br>'; 

foreach ($questions['question'] as $res) { 
    $text = $res['@attributes']['text']; 

    foreach ($res['answer'] as $ans) { 

     //pr($questions) . ' => '; 
     echo $ans . ' => '; 
     echo $ans->score[0]; // how to get score??? 
     echo '<br>'; 

    } 

    echo '<hr>'; 

} 

?> 

你能帮我请如何解决这个问题

回答

0

我讨厌等待答案 :-)

I这将解决我的问题;如果你有更好的想法,请与我分享

$questions = simplexml_load_file("xml/workshop_evaluation_questions_1.xml"); 

$cnt1 = 0; 
foreach($questions->question as $k1=>$v1) { 
    echo ($questions->question[$cnt1]['text']); 
    echo ' => '; 
    echo count($questions->question[$cnt1]->answer); 
    echo '<br>'; 

    $cnt2 = 0; 
    foreach($questions->question[$cnt1]->answer as $k2=>$v2) { 
     echo $questions->question[$cnt1]->answer[$cnt2]; 
     echo ' => '; 
     echo $questions->question[$cnt1]->answer[$cnt2]['score']; 
     echo '<br>'; 
     $cnt2++; 
    } 
    $cnt1++; 
    echo '<hr>'; 
}