Solved

# How to create a simple xml file through php

Posted on 2010-08-25
676 Views
How to create a simple xml file through php, simple date.
0
Question by:mugsinc
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 7
• 5
• 2
• +1

LVL 3

Accepted Solution

jezweb earned 500 total points
ID: 33519208
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 LVL 1 Author Comment ID: 33519229 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 LVL 3 Expert Comment ID: 33519296 if you use$doc = new xmldoc('1.0');

$doc = new_xmldoc('1.0'); does it work? 0 LVL 1 Author Comment ID: 33519345 nope, i get this error now Fatal error: Class 'xmldoc' not found in D:\Hosting\5806313\html\xirr\create.php on line 13 0 LVL 34 Expert Comment ID: 33519348 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 LVL 1 Author Comment ID: 33519374 bportlock, whats the file name it creates? 0 LVL 34 Expert Comment ID: 33519417 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

LVL 1

Author Comment

ID: 33519441
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

LVL 34

Expert Comment

ID: 33519510
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

LVL 1

Author Comment

ID: 33519530
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

LVL 1

Author Comment

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

LVL 34

Expert Comment

ID: 33519645
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

LVL 1

Author Comment

ID: 33519700
i tried both and got the same error
0

LVL 34

Expert Comment

ID: 33520006
0

LVL 5

Expert Comment

ID: 33520009
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

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

These days socially coordinated efforts have turned into a critical requirement for enterprises.
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
###### Suggested Courses
Course of the Month11 days, 9 hours left to enroll