PHP XML DOM childrends kopieren
Ben al een tijdje bezig om alleen de childrens van file1.xml te kopiëren naar nieuw file2.xml met nieuwe root en attributes.
Het maken van attributes met nieuwe root lukt me wel alleen hoe krijg ik daar dus die gekloonde/gekopieerde chidrens van file1.xml in??
Dus file1.xml =
<root >
<title>Jhon Haas</title>
</root>
en file2.xml moet zijn
<nieuwe root attr='bla' >
<title>Jhon Haas</title> // gekopieerde childrens van file1.xml
</root>
Heeft iemand een tip want ik ben ma aan het rommelen hey?
Dus wat ik tot nu toe heb
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php>
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->createElement($myattr, 'test')
$newnode = $dom->appendChild($element);
$newnode->setAttribute("id", "55");
print $dom->saveXML(). "\n";
$file= file2.xml
$dom->load('file1.xml');
// en dan hier de childrens copieren en nieuwe xml maken met nieuwe root.
$newcontent= $dom->saveXML();
if (file_put_contents($file, $newcontent)) {
echo "new xml saved!!!". "\n";
}
?>
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->createElement($myattr, 'test')
$newnode = $dom->appendChild($element);
$newnode->setAttribute("id", "55");
print $dom->saveXML(). "\n";
$file= file2.xml
$dom->load('file1.xml');
// en dan hier de childrens copieren en nieuwe xml maken met nieuwe root.
$newcontent= $dom->saveXML();
if (file_put_contents($file, $newcontent)) {
echo "new xml saved!!!". "\n";
}
?>
Thanx
Gewijzigd op 16/11/2010 20:06:17 door Stars satsr
"childrens" is dus niks.
Probeer het eens met DOMDocument::importNode
> http://nl2.php.net/manual/en/domdocument.importnode.php
Met importNode kan je een Node uit document A "importeren" voor gebruik in document B.
zoiets krijg je dan:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
Document a = ...;
Document b = ...;
Node aNode = a.getElement(...);
Node bNode = b.importNode(aNode);
Node bParent = b.getElement(...);
bParent.appendChild(bNode);
Document b = ...;
Node aNode = a.getElement(...);
Node bNode = b.importNode(aNode);
Node bParent = b.getElement(...);
bParent.appendChild(bNode);
Gewijzigd op 16/11/2010 21:10:43 door toby hinloopen
Super bedankt ik denk dat ik er uit kom alleen nog klein vraagje????? Hoe kan ik ervoor zorgen dat de xml die geschreven wordt ook leesbaar blijft in layout?
Dus
<root>
<child> test
</child>
</root>
i.p.v
<root><child> test</child></root>
is hier een trucje voor? Vast bedankt iedereen!
Noppes Homeland op 16/11/2010 21:54:32:
alles staat op http://www.php.net/DOM en http://www.php.net/XSL
En waarom dan hé?
Waarom XSL hé?
Het is namelijk zoals die post boven mij zegt formatOutput is.