How can I merge/insert xml file

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
newcomer20070001
Forum Newbie
Posts: 2
Joined: Sat Mar 31, 2007 4:30 pm

How can I merge/insert xml file

Post by newcomer20070001 »

feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]


Hi everyone,

I am very new to XML and php, I have a question about insert/merge data to XML file.

Suppose I have two XML files: a.xml and b.xml.
 
a.xml:
[syntax="xml"]<persons>
     <person id ="1">
     <name>John</name>
     <address>123</address>
     </person>
</persons>

b.xml:

Code: Select all

<persons>
     <person id ="2">
     <name>Sue</name>
     <address>123</address>
     </person>
</persons>

I want to have a new xml file: c.xml which looks like:

Code: Select all

<persons>
     <person id ="1">
     <name>John</name>
     <address>123</address>
     </person>
     <person id ="2">
     <name>Sue</name>
     <address>123</address>
     </person>
</persons>
How can I get this c.xml file? Any help would be appreciated. Thank you all.


feyd | Please use[/syntax]

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

Can a.xml and b.xml both contain person elements with the same id?
newcomer20070001
Forum Newbie
Posts: 2
Joined: Sat Mar 31, 2007 4:30 pm

Post by newcomer20070001 »

volka wrote:Can a.xml and b.xml both contain person elements with the same id?
No. They contain different id.
User avatar
Kieran Huggins
DevNet Master
Posts: 3635
Joined: Wed Dec 06, 2006 4:14 pm
Location: Toronto, Canada
Contact:

Post by Kieran Huggins »

take a look at [url=http://www.php.net/manual/en/ref.simplexml.php]simpleXML[url]
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

try

Code: Select all

<?php
$docA = new DOMDocument;
$docA->formatOutput=true;
$docA->preserveWhiteSpace=false;
$docA->loadxml(
'<persons>
  <person id ="1">
    <name>John</name>
    <address>123</address>
  </person>
</persons>');

$docB = DOMDocument::loadxml(
'<persons>
  <person id ="2">
    <name>Sue</name>
    <address>123</address>
  </person>
</persons>');

$xpath = new DOMXPath($docB);
$nodes = $xpath->query('//persons/person');
foreach($nodes as $n) {
  $new = $docA->importNode($n, true);
  $docA->documentElement->appendChild($new);
}

echo $docA->saveXML();
Post Reply