我有一個XML字符串如下:解析XML順序在PHP
<?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>
我想在XML中的元素在它們出現在原始字符串的順序來解析順序即。但使用SimpleXMLElement
和simplexml_load_string
給出相似的元件的陣列如下:
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)
在這種結果的所有文本框元件在單個陣列中返回。同樣,所有註釋和組合框返回在單獨的數組中,而不考慮原始XML中的順序。
誰能告訴我如何解析元素的實際順序? 謝謝。
這很好。你能告訴我如何獲取葉節點的屬性嗎? –
@ Arvind07請參閱http://php.net/manual/en/simplexmlelement.attributes.php,http://php.net/manual/en/simplexml.examples-basic.php和http://stackoverflow.com/問題/ 4625045/how-to-access-element-attributes-with-simplexml/4625075#4625075請 – Gordon
感謝您的快速幫助:) –