Парсване на XML

0 отговора 0 прегледа
#1

Парсване на XML

Здравейте,

ако може да някой да ми помогне за парсването с php5 на следния файл:

<level1 id="L11">
<level2 id="L21">
<field key="name1" value="11"/>
<field key="name2" value="22"/>
<field key="name3" value="33"/>
<field key="name4" value="44"/>
<field key="name5" value="55"/>
<field key="name6" value="66"/>
</level2>

<level2 id="L22">
<field key="name7" value="77"/>
<field key="name8" value="88"/>
<field key="nam9" value="99"/>
</level2>
</level1>

ето какво правя:
<?php
$dom = new DomDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->load('proba.xml');

$Level1 = $dom->getElementsByTagName('level1');

foreach ($Level1 as $Level1v) {
$id = $Level1v -> getAttribute('id');
echo "$id <br />";
}

$Level2 = $dom->getElementsByTagName('level2');

foreach ($Level2 as $Level2v) {
$id = $Level2v -> getAttribute('id');
echo "$id <br />";
}

$fd = $dom->getElementsByTagName('field');
foreach ($fd as $fds) {
$key = $fds -> getAttribute('key');
$value = $fds -> getAttribute('value');
echo "$key - $value<br />";
}

?>

ако така го изпълня, ще получа нещо такова:

id на level1
списък на всички id level1

id на level2
списък на всички id level2

key, value на field
списък на всички стойности на $key - $value

а целта ми е да получа дървовидна структура като оригиналния файл.
т.е.

L11
---- L21
---------name1 - 11
---------name2 - 22
---------name3 - 33
---------name4 - 44
...
---- L22
---------name7 - 77
---------name8 - 88
---------name9 -99

Отговор