Je voudrais créer un nouveau xml simplifié basé sur un existant: (en utilisant « SimpleXML »)parsing XML avec php
<?xml version="1.0" encoding="UTF-8"?>
<xls:XLS>
<xls:RouteInstructionsList>
<xls:RouteInstruction>
<xls:Instruction>Start</xls:Instruction>
</xls:RouteInstruction>
</xls:RouteInstructionsList>
<xls:RouteInstructionsList>
<xls:RouteInstruction>
<xls:Instruction>End</xls:Instruction>
</xls:RouteInstruction>
</xls:RouteInstructionsList>
</xls:XLS>
Parce qu'il ya toujours deux points dans les balises d'éléments, il gâchera avec "simpleXml", j'ai essayé d'utiliser la solution suivante->link.
Comment puis-je créer un nouveau xml avec cette structure:
<main>
<instruction>Start</instruction>
<instruction>End</instruction>
</main>
la "instruction-élément" tire son contenu de l'ancien "xls: Instruction-élément".
Voici le code mis à jour: Mais malheureusement il boucle jamais par:
$source = "route.xml";
$xmlstr = file_get_contents($source);
$xml = @simplexml_load_string($xmlstr);
$new_xml = simplexml_load_string('<main/>');
foreach($xml->children() as $child){
print_r("xml_has_childs");
$new_xml->addChild('instruction', $child->RouteInstruction->Instruction);
}
echo $new_xml->asXML();
il n'y a pas message d'erreur, si je laisse le "@" ...
Merci pour la réponse, toujours pas de chance avec ça. Je suppose qu'il adresse le mauvais noeud initial. Hm parce que je suis complètement nouveau pour PHP, même mes compétences de débogage sont limitées ... Avec $ instr vous voulez dire le nœud d'origine (xls:) Instruction? www.gps.alaingroeneweg.com/route.xml – algro
Le code produit cette sortie (PHP 5.3) en utilisant l'extrait XML que vous avez fourni. Donc, le problème est que le XML que vous utilisez ne correspond pas ou (improbable) la version de PHP que vous avez en quelque sorte produit des résultats différents. – Matthew
@algro, j'ai mis à jour ma réponse avec une autre version qui utilise ce fichier XML direct. – Matthew