douyin8623 2013-04-17 11:31
浏览 24
已采纳

使用php更新xml中的节点属性

Is it possible to update the node attributes of an xml using simplexml? example:-my program is actually a quiz editor for teacher, as a teacher, i want to edit a specific question attributes. ie

<Quiz>
<topic text="Preparation for Exam">
    <subtopic text="Math">
              <question text="1 + 1 = ?"> 
              <answer num="A" Text="1" /> 
              <answer num="B" Text="2" /> 
              <answer num="C" Text="3" /> 
              <answer num="D" Text="4" /> 
              </question>
              <question text="4 * 4 = ?" > 
              <answer num="A" Text="12" /> 
              <answer num="B" Text="14" /> 
              <answer num="C" Text="16" /> 
              <answer num="D" Text="18" /> 
              </question>
       </subtopic>
       </topic>
       </Quiz>

is it possible? though i have tried a lot of ways ie by deleting the previous node and then inserting the edited one. but this trick only works for last node... for other nodes it just do swapping

  • 写回答

1条回答 默认 最新

  • douzhangkui2467 2013-04-17 11:46
    关注
    <?php
    $subtopic = new SimpleXMLELement(data());
    $subtopic->question[1]['text'] = 'lalala';
    $subtopic->question[1]['foo'] = 'bar';
    
    foreach( $subtopic->question[1]->answer as $answer) {
        $answer['Text'] .= '(dez)';
    }
    
    echo $subtopic->asXML();
    
    
    function data() {
        return <<< eox
    <subtopic text="Math">
    <question text="1 + 1 = ?"> 
    <answer num="A" Text="1" /> 
    <answer num="B" Text="2" /> 
    <answer num="C" Text="3" /> 
    <answer num="D" Text="4" /> 
    </question>
    <question text="4 * 4 = ?" > 
    <answer num="A" Text="12" /> 
    <answer num="B" Text="14" /> 
    <answer num="C" Text="16" /> 
    <answer num="D" Text="18" /> 
    </question>
    </subtopic>
    eox;
    }
    

    prints

    <?xml version="1.0"?>
    <subtopic text="Math">
    <question text="1 + 1 = ?"> 
    <answer num="A" Text="1"/> 
    <answer num="B" Text="2"/> 
    <answer num="C" Text="3"/> 
    <answer num="D" Text="4"/> 
    </question>
    <question text="lalala" foo="bar"> 
    <answer num="A" Text="12(dez)"/> 
    <answer num="B" Text="14(dez)"/> 
    <answer num="C" Text="16(dez)"/> 
    <answer num="D" Text="18(dez)"/> 
    </question>
    </subtopic>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀