I would like to create a new simplified xml based on an existing one: (using "simpleXml")
<?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> Because there are always colons in the element-tags, it will mess with "simpleXml", I tried to use the following solution->link.
How can I create a new xml with this structure:
<main> <instruction>Start</instruction> <instruction>End</instruction> </main> the "instruction-element" gets its content from the former "xls:Instruction-element".
Here is the updated code: But unfortunately it never loops through:
$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(); there is no error-message, if I leave the "@"…