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 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址