Привет, мне было интересно, знает ли кто-нибудь script или функцию, которая может отформатировать любой XML файл в массив в определенном формате, например, иметь xml-то вроде этого (но гораздо дольше)
<data>
<width>3.5</width>
<height>2</height>
<edge>.125</edge>
<safe>.125</safe>
</data>
<fold>
<show_lines></show_lines>
<type>online</type>
</fold>
<preview>
<name>testfile</name>
<location>testurl.com</location>
</preview>
<preview>
<name>myfile</name>
<location>someurl.com</location>
<special>frontandback</special>
</preview>
Id в основном хочет пропустить каждый атрибут, проверьте, есть ли внутри него и т.д. и т.д. и так далее, и в основном создайте массив, чтобы он выглядел так.
$array = [data] (
width=>3.5
height=>2
edge=>.125
safe=>.125
)
[fold] (
type=>online
)
[preview] (
[0]=>(
name=>testfile
location=>testurl.com
)
[1]=>(
name=>myfile
location=>someurl.com
special=>frontandback
)
)
и т.д., поэтому в основном он будет захватывать только те элементы, которые имеют значения, и пропускать те, которые не имеют, а некоторые части xml могут иметь больше детей, чем другая часть, и они должны захватывать их все, и если есть несколько атрибутов с одно и то же имя, которое будет представлять собой массив, каждый из которых является массивом внутри него
Надеюсь, что имеет смысл, кто-нибудь может помочь. Im в основном пытается использовать simplexml, но может использовать anythign else
Для простых документов, подобных тому, что в вашем примере, всегда есть этот (грязный) трюк:
$arr = json_decode(json_encode(simplexml_load_string($xml)), 1);
выход:
Array (
[data] => Array (
[width] => 3.5
[height] => 2
[edge] => .125
[safe] => .125
)
[fold] => Array (
[show_lines] => Array ()
[type] => online
)
[preview] => Array (
[0] => Array (
[name] => testfile
[location] => testurl.com
)
[1] => Array (
[name] => myfile
[location] => someurl.com
[special] => frontandback
)
)
)