Analizar XML secuencialmente en PHP

Tengo una cadena XML de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?>
<document id="0" name="RegSimple" Version="0.1">
<Description>
    Configuration document for simple registration of incidents.
    This document will contain both the fixed and the user-defined fields to
    show on the registration screen.
</Description>
<Fields>
    <Textbox id="1" name="IncidentID" visibility="Hidden" width="500"
        displayreadonly="False" />
    <Comment id="200" height="10" name="c1" caption=" " />
    <Header id="100" name="Header" caption="Description" />
    <Radiobox id="2" name="Type" caption="Feedback type" width="500"
        type="19" displayreadonly="true"></Radiobox>
    <Textbox id="3" name="Description" caption="My feedback"
        width="500" height="75" multiline="True" required="True"
        displayreadonly="True" />
    <Textbox id="4" name="Incident" caption="Title *" width="500"
        height="25" multiline="False" required="True" displayreadonly="False" />
    <Comment id="201" width="500" name="Comment2"
        caption="* All messages are published with a short title that describes the feedback"
        multiline="True" height="40" />
    <Comment id="202" height="20" name="c1" caption=" " />
    <Combobox id="5" name="Unit" caption="Unit" width="500" type="12"
        required="True" displayreadonly="True"></Combobox>
    <Combobox id="6" name="Country" caption="Country" width="500"
        type="11" required="True" displayreadonly="True"></Combobox>
    <Textbox id="7" name="Office" caption="Office" height="50"
        width="500" multiline="True" displayreadonly="True" />
    <Textbox id="8" name="Cause" caption="Cause" height="50"
        width="500" multiline="True" displayreadonly="True" />
    <Textbox id="9" name="Action" caption="Recommended actions"
        height="50" width="500" multiline="True" displayreadonly="True" />
    <Combobox id="10" name="Theme" caption="Theme" width="500"
        type="3" required="True" displayreadonly="True"></Combobox>
    <Header id="102" name="Time" caption="Date, Time and location" />
    <Datetime id="11" name="Date" caption="Date" width="120"
        displayreadonly="True" />
    <Textbox id="12" name="Time" caption="Time" width="120"
        displayreadonly="True" property="True" />
    <Textbox id="13" name="Location" caption="Location" width="500"
        displayreadonly="True" />
    <Header id="103" name="info" caption="Contact information" />
    <Textbox id="14" name="Name" caption="Name" width="500" tag="user.name"
        displayreadonly="False" />
    <Textbox id="15" name="E-Mail" caption="E-Mail" width="500"
        tag="user.e-mail" displayreadonly="False" />
    <Textbox id="16" name="Registered date" visibility="Hidden"
        width="500" tag="system.date" displayreadonly="False" />
</Fields>
</document>

Quiero que los elementos en el XML se analicen secuencialmente, es decir, en el orden en que aparecen en la cadena original. Pero usandoSimpleXMLElement ysimplexml_load_string Dar matrices de elementos similares de la siguiente manera:

object(SimpleXMLElement)[292]
  public '@attributes' => 
    array
      'id' => string '0' (length=1)
      'name' => string 'RegSimple' (length=9)
      'Version' => string '0.1' (length=3)
  public 'Description' => string '
    Configuration document for simple registration of incidents.
    This document will contain both the fixed and the user-defined fields to show on the registration screen.
  ' (length=178)
  public 'Fields' => 
    object(SimpleXMLElement)[293]
      public 'Textbox' => 
        array
          0 => 
            object(SimpleXMLElement)[294]
              public '@attributes' => 
                array
                  'id' => string '1' (length=1)
                  'name' => string 'IncidentID' (length=10)
                  'visibility' => string 'Hidden' (length=6)
                  'width' => string '500' (length=3)
                  'displayreadonly' => string 'False' (length=5)
          1 => 
            object(SimpleXMLElement)[298]
              public '@attributes' => 
                array
                  'id' => string '3' (length=1)
                  'name' => string 'Description' (length=11)
                  'caption' => string 'My feedback' (length=11)
                  'width' => string '500' (length=3)
                  'height' => string '75' (length=2)
                  'multiline' => string 'True' (length=4)
                  'required' => string 'True' (length=4)
                  'displayreadonly' => string 'True' (length=4)
          2 => 
            object(SimpleXMLElement)[299]
              public '@attributes' => 
                array
                  'id' => string '4' (length=1)
                  'name' => string 'Incident' (length=8)
                  'caption' => string 'Title *' (length=7)
                  'width' => string '500' (length=3)
                  'height' => string '25' (length=2)
                  'multiline' => string 'False' (length=5)
                  'required' => string 'True' (length=4)
                  'displayreadonly' => string 'False' (length=5)
      public 'Comment' => 
        array
          0 => 
            object(SimpleXMLElement)[295]
              public '@attributes' => 
                array
                  'id' => string '200' (length=3)
                  'height' => string '10' (length=2)
                  'name' => string 'c1' (length=2)
                  'caption' => string ' ' (length=1)
          1 => 
            object(SimpleXMLElement)[300]
              public '@attributes' => 
                array
                  'id' => string '201' (length=3)
                  'width' => string '500' (length=3)
                  'name' => string 'Comment2' (length=8)
                  'caption' => string '* All messages are published with a short title that describes the feedback' (length=75)
                  'multiline' => string 'True' (length=4)
                  'height' => string '40' (length=2)
          2 => 
            object(SimpleXMLElement)[301]
              public '@attributes' => 
                array
                  'id' => string '202' (length=3)
                  'height' => string '20' (length=2)
                  'name' => string 'c1' (length=2)
                  'caption' => string ' ' (length=1)
      public 'Header' => 
        array
          0 => 
            object(SimpleXMLElement)[296]
              public '@attributes' => 
                array
                  'id' => string '100' (length=3)
                  'name' => string 'Header' (length=6)
                  'caption' => string 'Description' (length=11)
          1 => 
            object(SimpleXMLElement)[308]
              public '@attributes' => 
                array
                  'id' => string '102' (length=3)
                  'name' => string 'Time' (length=4)
                  'caption' => string 'Date, Time and location' (length=23)
          2 => 
            object(SimpleXMLElement)[312]
              public '@attributes' => 
                array
                  'id' => string '103' (length=3)
                  'name' => string 'info' (length=4)
                  'caption' => string 'Contact information' (length=19)
      public 'Radiobox' => 
        object(SimpleXMLElement)[297]
          public '@attributes' => 
            array
              'id' => string '2' (length=1)
              'name' => string 'Type' (length=4)
              'caption' => string 'Feedback type' (length=13)
              'width' => string '500' (length=3)
              'type' => string '19' (length=2)
              'displayreadonly' => string 'true' (length=4)
      public 'Combobox' => 
        array
          0 => 
            object(SimpleXMLElement)[302]
              public '@attributes' => 
                array
                  'id' => string '5' (length=1)
                  'name' => string 'Unit' (length=4)
                  'caption' => string 'Unit' (length=4)
                  'width' => string '500' (length=3)
                  'type' => string '12' (length=2)
                  'required' => string 'True' (length=4)
                  'displayreadonly' => string 'True' (length=4)
          1 => 
            object(SimpleXMLElement)[303]
              public '@attributes' => 
                array
                  'id' => string '6' (length=1)
                  'name' => string 'Country' (length=7)
                  'caption' => string 'Country' (length=7)
                  'width' => string '500' (length=3)
                  'type' => string '11' (length=2)
                  'required' => string 'True' (length=4)
                  'displayreadonly' => string 'True' (length=4)

En este resultado todos losCaja de texto los elementos se devuelven en una sola matriz. Similarmente todocomentarios yComboboxes se devuelven en matrices independientes independientemente de su orden en el XML original.

¿Alguien puede decirme cómo analizar los elementos en su orden real? Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta