I have a XML file as a master file (master.xml) and its content is blank.
<?xml version="1.0" encoding="UTF-8"?> <master/>
I have a loop in which i get some data and turn them into xml files (item.xml) and their content is like
<?xml version="1.0" encoding="UTF-8"?> <master> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> </master>
All i want, is to be able to get the Item from the item.xml
and insert it on master.xml
under the master tag so the final result would look something like
<?xml version="1.0" encoding="UTF-8"?> <master> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> </master>
I don’t know if it helps but the code right now is like this.
$targetDom = new DOMDocument(); $targetDom->load('master.xml'); while($row = $sql->fetch(PDO::FETCH_ASSOC)) { // Data beeing processed and stored as item.xml $sourceDom = new DOMDocument(); $sourceDom->load('item.xml'); foreach ($sourceDom->documentElement->childNodes as $child) { $targetDom->appendChild( $targetDom->importNode($child, TRUE) ); } }
The code above has a result of this
<?xml version="1.0" encoding="UTF-8"?> <master/> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item> <item> <key1>value1</key1> <key2>value2</key2> <key3>value3</key3> </item>
What am i missing?
Advertisement
Answer
You need to append the items to the first element of the $targetDom
Use:
$targetDom->documentElement->appendChild( $targetDom->importNode($child, TRUE) );