Парсване на XML
0 отговора
0 прегледа
Парсване на 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
ако може да някой да ми помогне за парсването с 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