How to create a simple xml file through php

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

Improve company productivity with a Business Account.Sign Up

x
 
jezwebConnect With a Mentor Commented:
There's a lot of examples about this on the web, eg ref to
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>

Open in new window

0
 
mugsincAuthor 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
 
jezwebCommented:
if you use

$doc = new xmldoc('1.0');

instead of

$doc = new_xmldoc('1.0');

does it work?
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
mugsincAuthor 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
 
Beverley PortlockCommented:
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() );

Open in new window

0
 
mugsincAuthor Commented:
bportlock, whats the file name it creates?
0
 
Beverley PortlockCommented:
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
 
mugsincAuthor 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
 
Beverley PortlockCommented:
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
 
mugsincAuthor Commented:
Warning: file_put_contents(D:\Hosting806313\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
 
mugsincAuthor Commented:
i used a coldfusion and created a xml file in the same folder, but i cant replicate the same function in PHP
0
 
Beverley PortlockCommented:
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
 
mugsincAuthor Commented:
i tried both and got the same error
0
 
Beverley PortlockCommented:
Please post the code here.
0
 
wmadrid1Commented:
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>';
?>

Open in new window

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.

All Courses

From novice to tech pro — start learning today.