<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id='function.simplexml-load-file' xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>simplexml_load_file</refname>
  <refpurpose>
   Interprets an XML file into an object
  </refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>SimpleXMLElement</type><methodname>simplexml_load_file</methodname>
   <methodparam><type>string</type><parameter>filename</parameter></methodparam>
   <methodparam choice="opt"><type>string</type><parameter>class_name</parameter><initializer>"SimpleXMLElement"</initializer></methodparam>
   <methodparam choice="opt"><type>int</type><parameter>options</parameter><initializer>0</initializer></methodparam>
   <methodparam choice="opt"><type>string</type><parameter>ns</parameter><initializer>""</initializer></methodparam>
   <methodparam choice="opt"><type>bool</type><parameter>is_prefix</parameter><initializer>false</initializer></methodparam>
  </methodsynopsis>
  <para>
   Convert the well-formed XML document in the given file to an object.
  </para>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>filename</parameter></term>
     <listitem>
      <para>
       Path to the XML file
      </para>
      <note>
       <para>
        Libxml 2 unescapes the URI, so if you want to pass e.g.
        <literal>b&amp;c</literal> as the URI parameter <literal>a</literal>,
        you have to call
        <literal>simplexml_load_file(rawurlencode('http://example.com/?a=' .
        urlencode('b&amp;c')))</literal>. Since PHP 5.1.0 you don't need to do
        this because PHP will do it for you.
       </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>class_name</parameter></term>
     <listitem>
      <para>
       You may use this optional parameter so that
       <function>simplexml_load_file</function> will return an object of 
       the specified class. That class should extend the 
       <type>SimpleXMLElement</type> class.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>options</parameter></term>
     <listitem>
      <para>
       Since PHP 5.1.0 and Libxml 2.6.0, you may also use the
       <parameter>options</parameter> parameter to specify <link
       linkend="libxml.constants">additional Libxml parameters</link>.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>ns</parameter></term>
     <listitem>
      <para>
       Namespace prefix or URI.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>is_prefix</parameter></term>
     <listitem>
      <para>
       &true; if <parameter>ns</parameter> is a prefix, &false; if it's a URI;
       defaults to &false;.
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   Returns an <type>object</type> of class <type>SimpleXMLElement</type> with
   properties containing the data held within the XML document,&return.falseforfailure;.
  </para>
 </refsect1>
 
 <refsect1 role="errors"><!-- {{{ -->
  &reftitle.errors;
  <para>
   Produces an <constant>E_WARNING</constant> error message for each error
   found in the XML data.
  </para>
  <tip>
   <para>
    Use <function>libxml_use_internal_errors</function> to suppress all XML
    errors, and <function>libxml_get_errors</function> to iterate over them
    afterwards.
   </para>
  </tip>
 </refsect1><!-- }}} -->
 
 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title>Interpret an XML document</title>
    <programlisting role="php">
<![CDATA[
<?php
// The file test.xml contains an XML document with a root element
// and at least an element /[root]/title.

if (file_exists('test.xml')) {
    $xml = simplexml_load_file('test.xml');
 
    print_r($xml);
} else {
    exit('Failed to open test.xml.');
}
?>
]]>
    </programlisting>
    <para>
     This script will display, on success:
    </para>
    <screen>
<![CDATA[
SimpleXMLElement Object
(
  [title] => Example Title
  ...
)
]]>
    </screen>
    <simpara>
     At this point, you can go about using <literal>$xml->title</literal>
     and any other elements.
    </simpara>
   </example>
  </para>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>simplexml_load_string</function></member>
    <member><methodname>SimpleXMLElement::__construct</methodname></member>
    <member><xref linkend="simplexml.examples-errors" /></member>
    <member><function>libxml_use_internal_errors</function></member>
    <member><xref linkend="simplexml.examples-basic"/></member>
   </simplelist>
  </para>
 </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->