Hej!
Jag undrar om ni kan hjälpa mig att visa xml strukturen på något sätt.
För att ni ska förstå mig bättre ska jag ge er ett exempel.
http://www.tizag.com/xmlTutorial/xmltree.php
Denna sida visar en väldigt enkel struktur av ett xml dokument.
Kod:
<inventory>
<drink>
<lemonade>
<price>$2.50</price>
<amount>20</amount>
</lemonade>
<pop>
<price>$1.50</price>
<amount>10</amount>
</pop>
</drink>
<snack>
<chips>
<price>$4.50</price>
<amount>60</amount>
</chips>
</snack>
<snack>
<chips>
<price>$4.50</price>
<amount>60</amount>
</chips>
</snack>
</inventory>
Det som jag behöver hjälp med att åstadkomma är att visa följande
Kod:
<inventory>
<drink>
<lemonade>
<price></price>
<amount></amount>
</lemonade>
<pop>
<price></price>
<amount></amount>
</pop>
</drink>
<snack>
<chips>
<price></price>
<amount></amount>
</chips>
</snack>
</inventory>
Jag vill alltså skriva ut xml strukturen på ett xml dokument och undvika dubbletter som ni ser. Går detta att åstadkomma på något sätt?
Jag använder mig av PHP och har med hjälp av simple xml och funktionen getName() (
http://www.w3schools.com/php/php_ref_simplexml.asp) lyckats skriva ut allt på en lång lista. Men den tar inte hänsyn till dubbletter och inte heller hur långt in i dokumentet de ligger:
PHP-kod:
function recurse_xml_tree($node) {
if (!$node || sizeof($node->children()) < 1)
return array();
$result = array();
foreach ($node->children() as $current) {
array_push($result, $current->getName());
$result = array_merge(
$result,
recurse_xml_tree($current)
);
}
return $result;
}
$xml = simplexml_load_file('http://www.tizag.com/files/xml/lemonade.xml');
$list = recurse_xml_tree($xml);
ger mig följande:
Kod:
drink
lemonade
price
amount
pop
price
amount
snack
chips
price
amount
snack
chips
price
amount
Vilket tyvärr inte alls åstadkommer vad jag vill och hoppas därför på att någon av er kan hjälpa mig att skriva ut strukturen på xml dokumentet på något sätt. Den ska även skriva ut attributen exempelvis <chips name="pringles"></chips>
Såg att man kunde få ut attributen via attribute i simpleXML men tog inte med det i mitt exempel eftersom att jag ville att ni skulle förstå vad jag menade.
Är det möjligt att åstadkomma det jag vill åstadkomma?
Tack på förhand!