# How to create a simple xml file through php

How to create a simple xml file through php, simple date.
LVL 1
###### Who is Participating?

x

Commented:
http://www.developerfusion.com/code/3944/how-to-create-xml-files/

If you need to create XML files in PHP, you can do it without having to create the tags yourself with strings. This code shows you how to use the new_child functions to create an XML file.

<?
$doc = new_xmldoc('1.0');$root = $doc->add_root('members');$member = $root->new_child('member','');$member->new_child('lastName','John');
$member->new_child('firstName','Adams');$member->new_child('contribution','3400');

$member =$root->new_child('member','');

$member->new_child('lastName','Debra');$member->new_child('firstName','Hones');
$member->new_child('contribution','2400');$member = $root->new_child('member','');$member->new_child('lastName','Jake');
$member->new_child('firstName','Tudor');$member->new_child('contribution','1200');

$fp = @fopen('members.xml','w'); if(!$fp) {
die('Error cannot create XML file');
}
fwrite($fp,$doc->dumpmem());
fclose($fp); ?> would create the following XML file. <members> <member> <lastName>John</lastName> <firstName>Adams</firstName> <contribution>3400</contribution> </member> <member> <lastName>Debra</lastName> <firstName>Hones</firstName> <contribution>2400</contribution> </member> <member> <lastName>Jake</lastName> <firstName>Tudor</firstName> <contribution>1200</contribution> </member> </members>  0 Author Commented: i get the below error when i run the file Fatal error: Call to undefined function new_xmldoc() in D:\xxxx\xxxxx\html\xirr\create.php on line 13 0 Commented: if you use$doc = new xmldoc('1.0');

$doc = new_xmldoc('1.0'); does it work? 0 Author Commented: nope, i get this error now Fatal error: Class 'xmldoc' not found in D:\Hosting\5806313\html\xirr\create.php on line 13 0 Commented: You may not have the XML_DOM functions installed in PHP. However simpleXML is installed by default and is good enough for general use. http://uk2.php.net/manual/en/book.simplexml.php <?php$xml = new SimpleXMLElement("<base></base>");

$xml->addChild("field1", "a value");$xml->addChild("field2", "another value");
$xml->addChild("multi");$xml->multi->addChild("Another", "1234");
$xml->multi->addChild("Another", "9876"); echo$xml->asXml();

// To show it "directly" in the browser we will use htmlentities

echo "<br/>";
echo htmlentities( $xml->asXml() );  0 Author Commented: bportlock, whats the file name it creates? 0 Commented: It does not create a file, it creates the XML in memory but it is easily written to a file using file_put_contents file_put_contents("anXmlFile.xml",$xml->asXml() );

http://www.php.net/file_put_contents

Unless you are creating *huge* amounts of XML then SimpleXML will work fine. If your XML is going to be (say) 10 MB in size then install the XML_WRITER or XML_DOM tools or write it directly to file yourself.
0

Author Commented:
this is the error i get when i try to create the file

Warning: file_put_contents(anXmlFile.xml) [function.file-put-contents]: failed to open stream: Permission denied in
0

Commented:
That is not an XML error, it simply means that the web daemon (Apache) has no permission to write to whatever folder it is trying to use. Try putting in a full path

file_put_contents("/path/to/my/folder/anXmlFile.xml", \$xml->asXml() );

0

Author Commented:
Warning: file_put_contents(D:\Hosting806313\html\xirr\members.xml) [function.file-put-contents]: failed to open stream: Invalid argument in D:\Hosting\5806313\html\xirr\create.php on line 24
0

Author Commented:
i used a coldfusion and created a xml file in the same folder, but i cant replicate the same function in PHP
0

Commented:
Please post the code fragment you are using. Also in PHP path names use '/' rather than '\' even if you are on Windows. You cannot use '\' in a doublequoted PHP string as it acts as an escaping mechanism. PHP will translate the foward slashes to back slashes automatically.
0

Author Commented:
i tried both and got the same error
0

Commented:
0

Commented:
mugsinc
You can try retireve the xml file without have the xml extension loaded in the server:

<?
echo '<?xml version="1.0" encoding="UTF-8" ?>';
echo '<Data>';
echo "<record att='nothing'></record>";
echo '</Data>';
?>

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.