2

I am a beginner in PHP and XML.

Can somebody tell me how to include XML encoding when I write a new xml file.

Here are the codes:

writexml.php

<?php 
 $ids =  array("1", "2", "3", "4", "5");
 $names = array("Jean Claude Van Damme", "Scott Adkins", "Dolph Ludgren", "Michael Jai White", "Michael Worth");

 $domdoc = new DOMDocument(); 
 $domdoc->formatOutput = true; 

 $el_actionstars = $domdoc->createElement( "actionstars" ); 
 $domdoc->appendChild( $el_actionstars  ); 

 $arr_size = count($ids);

 for ($i=0; $i < $arr_size; $i++) {
  $el_actionstar = $domdoc->createElement( "actionstar" ); 

  $el_id =  $domdoc->createElement( "id" ); 
  $el_id->appendChild( $domdoc->createTextNode($ids[$i] . "")); 
  $el_actionstar->appendChild($el_id);

  $el_name =  $domdoc->createElement( "name" ); 
  $el_name->appendChild( $domdoc->createTextNode($names[$i] . "")); 
  $el_actionstar->appendChild($el_name);


  $el_actionstars->appendChild($el_actionstar);
 }

 echo $domdoc->saveXML(); 
 $domdoc->save("actionstars.xml") 
?>

The xml output is <?xml version="1.0"?> and I want to add the encoding to make it look like <?xml version="1.0" encoding="ISO-8859-1"?>. Pls help...

3
  • Duplicate Commented May 31, 2011 at 7:07
  • The example for DOMDocument::__construct shows how to do that. Please refer to the manual before asking questions with obvious answers. Commented May 31, 2011 at 7:16
  • Lol. Someone inject more love... Commented May 31, 2011 at 7:19

3 Answers 3

5

Try using this in your instantiation:

/**
 * <?xml version="1.0" encoding="UTF-8" ?>
 */
$domdoc = new DOMDocument('1.0', 'UTF-8');

As seen here: http://php.net/manual/en/domdocument.construct.php

Sign up to request clarification or add additional context in comments.

Comments

4

See bottom of http://php.net/manual/en/domdocument.savexml.php

When you save whole document: DOMDocument->saveXML() produces string in encoding defined in property DOMDocument->encoding.

When you save only one node: DOMDocument->saveXML(DOMNode) produces always string in UTF-8.

You can set it in the constructor

DOMDocument::__construct ([ string $version [, string $encoding ]] )

e.g.,

$domdoc = new DOMDocument('1.0', 'iso-8859-1');

2 Comments

Do you mean whenever I'll save a whole document I have to check the DOMDocument->encoding?
Just create the domdoc with the encoding you want.
1

Try with new DomDocument('1.0', 'UTF-8');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.