fork download
  1. <?php
  2.  
  3. $strXml = '<data>
  4. <task id="1">
  5. <parent>0</parent>
  6. </task>
  7. <task id="2">
  8. <parent>-1</parent>
  9. </task>
  10. <task id="3">
  11. <parent>-1</parent>
  12. </task>
  13. <task id="4">
  14. <parent>0</parent>
  15. </task>
  16. <task id="5">
  17. <parent>-1</parent>
  18. </task>
  19. <task id="6">
  20. <parent>-1</parent>
  21. </task>
  22. <task id="7">
  23. <parent>0</parent>
  24. </task>
  25. <task id="8">
  26. <parent>-1</parent>
  27. </task>
  28. <task id="9">
  29. <parent>-1</parent>
  30. </task>
  31. </data>';
  32.  
  33. $convertedXML = new SimpleXMLElement($strXml);
  34. $i = 0;
  35. foreach($convertedXML as $task) {
  36. if($convertedXML->task[$i]) {
  37. $id = (string) $task["id"];
  38. $parent = (string) $task->parent;
  39. $task->parent = ($parent == 0) ? 0 : $back_parent;
  40. $back_parent = ($parent == 0) ? $id : $back_parent;
  41. $i++;
  42. }
  43. }
  44. echo $convertedXML->saveXML();
  45.  
  46. ?>
Success #stdin #stdout 0.01s 24400KB
stdin
Standard input is empty
stdout
<?xml version="1.0"?>
<data>
    <task id="1">
        <parent>0</parent>
    </task>
    <task id="2">
        <parent>1</parent>
    </task>
    <task id="3">
        <parent>1</parent>
    </task>
    <task id="4">
        <parent>0</parent>
    </task>
    <task id="5">
        <parent>4</parent>
    </task>
    <task id="6">
        <parent>4</parent>
    </task>
    <task id="7">
        <parent>0</parent>
    </task>
    <task id="8">
        <parent>7</parent>
    </task>
    <task id="9">
        <parent>7</parent>
    </task>
</data>