PHP xml_parse()Function


PHP XML 参考手册Complete PHP XML Reference Manual

Definition and Usage

The xml_parse() function parses an XML document.

If successful, the function returns TRUE. If it fails, it returns FALSE.

Syntax

xml_parse(parser,xml,end)

Parameter Description
parser Required. Specifies the XML parser to use.
xml Required. Specifies the XML data to parse.
end Optional. If this parameter is TRUE, the data in the "xml" parameter is the last piece of data in the current parse.

Note:Entity errors are reported at the end of the parse and are only displayed when the "end" parameter is TRUE.



Tips and Notes

Tip:To create an XML parser, use the xml_parser_create() function.


Example 1

XML File

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

PHP Code

<?php
$parser=xml_parser_create();

function char($parser,$data)
{
echo $data;
}

xml_set_character_data_handler($parser,"char");
$fp=fopen("test.xml","r");

while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}

xml_parser_free($parser);
?>

The output of the above code is shown below:

Tove Jani Reminder Don't forget me this weekend!


Example 2

Use the same XML file but display the XML data in a different way:

<?php
$parser=xml_parser_create();

function start($parser,$element_name,$element_attrs)
{
switch($element_name)
{
case "NOTE":
echo "-- Note --<br />";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}

function stop($parser,$element_name)
{
echo "<br />";
}

function char($parser,$data)
{
echo $data;
}

xml_set_element_handler($parser,"start","stop");
xml_set_character_data_handler($parser,"char");
$fp=fopen("test.xml","r");

while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}

xml_parser_free($parser);
?>

The output of the above code is shown below:

-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!


PHP XML 参考手册Complete PHP XML Reference Manual Other Extensions