PHP Tutorial - PHP simplexml_load_file() Function






The simplexml_load_file() function converts the specified XML file into a SimpleXMLElement object.

Syntax

PHP simplexml_load_file() Function has the following syntax.

simplexml_load_file(file,classname,options,ns,is_prefix);

Parameter

ParameterIs RequiredDescription
fileRequired.Path to the XML file
classnameOptional.Class of the new object
optionsOptional.Additional Libxml parameters. Is set by specifying the option and 1 or 0 (TRUE or FALSE, e.g. LIBXML_NOBLANKS(1))
nsOptional.A namespace prefix or URI
is_prefixOptional.A Boolean value. TRUE if ns is a prefix. FALSE if ns is a URI. Default is FALSE

Possible values:

  • LIBXML_COMPACT - Activate nodes allocation optimization (may speed up application)
  • LIBXML_DTDATTR - Set default DTD attributes
  • LIBXML_DTDLOAD - Load external subset
  • LIBXML_DTDVALID - Validate with the DTD
  • LIBXML_NOBLANKS - Remove blank nodes
  • LIBXML_NOCDATA - Merge CDATA as text nodes
  • LIBXML_NOEMPTYTAG - Expand empty tags (e.g. <br/> to <br></br>), only available in the DOMDocument->save() and DOMDocument->saveXML() functions
  • LIBXML_NOENT - Substitute entities
  • LIBXML_NOERROR - Do not show error reports
  • LIBXML_NONET - Disable network access while loading documents
  • LIBXML_NOWARNING - Do not show warning reports
  • LIBXML_NOXMLDECL - Drop the XML declaration when saving a document
  • LIBXML_NSCLEAN - Remove redundant namespace declarations
  • LIBXML_PARSEHUGE - Sets XML_PARSE_HUGE flag, which relaxes any hardcoded limit from the parser. This affects limits like maximum depth of a document and limits of the size of text nodes
  • LIBXML_XINCLUDE - Implement XInclude substitution
  • LIBXML_ERR_ERROR - Get recoverable errors
  • LIBXML_ERR_FATAL - Get fatal errors
  • LIBXML_ERR_NONE - Get no errors
  • LIBXML_ERR_WARNING - Get simple warnings
  • LIBXML_VERSION - Get libxml version
  • LIBXML_DOTTED_VERSION - Get dotted libxml version




Return

Returns a SimpleXMLElement object on success. FALSE on failure.

Example

Convert an XML file into a SimpleXMLElement object, then output keys and elements of the object.

Assume we have the following XML file, "note.xml":

<?xml version="1.0" encoding="ISO-8859-1"?>
<book>
    <name>PHP</name>
    <name>Java</name>
</book>

PHP code


<?php
$xml=simplexml_load_file("test.xml");
print_r($xml);
?>




Example 2

Output the data from each element in the XML file:


<?php
$xml=simplexml_load_file("test.xml");
echo $xml->to . "\n";
echo $xml->from . "\n";
echo $xml->heading . "\n";
echo $xml->body;
?>

Example 3

Output the element's name and data for each child node in the XML file:


<?php
$xml=simplexml_load_file("test.xml");
echo $xml->getName() . "\n";

foreach($xml->children() as $child){
   echo $child->getName() . ": " . $child . "\n";
}
?>

Example 4

The following code shows how to get attribute and element as array.


<?php
$xml = simplexml_load_file('test.xml');
echo $xml->book[3]->title . ' (ISBN: ' . $xml->book[3]['isbn13'] . ')';
?>

The following code is for test.xml.

<?xml version='1.0' encoding='utf-8'?>
<inventory>
  <book isbn13='1'>
    <title>PHP</title>
  <author>Jack</author>
  <publisher>Publisher 1</publisher>
  <description>PHP Book</description>
  </book>
  <book isbn13='2'>
    <title>XML</title>
  <author>Jane</author>
  <publisher>Publisher 2</publisher>
  <description>XML Book</description>
  </book>
</inventory>

The code above generates the following result.

Example 5

The following code shows how to check if an element is an array.


/* ww  w  . j a  va 2 s.c om*/
<?php
$xml = simplexml_load_file('test.xml');
?>
<html>
<head>
</head>

<body>
<?php
foreach ($xml->book as $book) {
  echo '<h2>' . $book->title . '</h2>';
  
  echo '<p class="author">';
  if (is_array($book->author)) {
    echo implode(', ', $book->author);
  } else {
    echo $book->author;
  }  
  echo '</p>';
                
  echo '<p class="publisher">' . $book->publisher . '</p>';
  echo '<p class="publisher">ISBN: ' . $book['isbn13'] . '</p>';
                  
  echo '<p>' . $book->description . '</p>';
}
?>
</body>
</html>

The following code is for test.xml.

<?xml version='1.0' encoding='utf-8'?>
<inventory>
  <book isbn13='1'>
    <title>PHP</title>
  <author>Jack</author>
  <publisher>Publisher 1</publisher>
  <description>PHP Book</description>
  </book>
  <book isbn13='2'>
    <title>XML</title>
  <author>Jane</author>
  <publisher>Publisher 2</publisher>
  <description>XML Book</description>
  </book>
</inventory>

The code above generates the following result.