Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

expat parser 1

Status
Not open for further replies.

takethetrain

Technical User
Jun 16, 2003
6
UG
I set up an Apache server with PHP and MySQL using InstallShield setups that required minimal intervention.

Everything is working well. However, I am trying to work through a PHP/XML tutorial.

However, simple examples arent working on my server. I think I need to add XML or expat extensions to the PHP.ini or something like that.

So far, I havent found clear instructions of determining what extensions are loaded and how to load new ones.

Any assistance will be greatly appreciated.
Don
 
what errors are you getting?

and if you are not getting errors, what is the setting for diplay_errors in your php.ini?
 
The display_errors setting was set to no. I changes the setting to yes and rebooted the server but there was still no error message.

I re-read the original post and realized it was pretty lousy. Here is some more information.

I am working through the simple example at

I set up a local server because I am in East Africa and my internet connection is incredibly slow. I used the installs from PHP and MySQL Web Development ISBN 0-672-32525-X on a Windows XP SP2 for
Apache 1.3.27, PHP 4.2.3, and MySQL 3.23.52.

I placed the files on my website hoping my ISP servers would display the XML properly but received the following message.
Parse error: parse error, unexpected T_VARIABLE in /home/dpierce/jinjauganda- on line 2

The text of the PHP and XML files is below.

xmltest.xml
<?php//Initialize the XML parser
$parser=xml_parser_create();//Function to use at the start of an element
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 to use at the end of an element
function stop($parser,$element_name)
{
echo "<br />";
}//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}//Specify element handler
xml_set_element_handler($parser,"start","stop");//Specify data handler
xml_set_character_data_handler($parser,"char");//Open XML file
$fp=fopen("test.xml","r");//Read data
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)));
}//Free the XML parser
xml_parser_free($parser);?>


note.xml
<?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>
 
the code works fine with me.

a couple of suggestions though:

1. your commenting looks out of kilter and you should leave a space (at least) after the <?php.

2. you are reading from a file called test.xml but your post above indicates that you have called the file note.xml.

the code i tested (essentially just formatting changes) is as follows

Code:
<?php 

//Initialize the XML parser
$parser=xml_parser_create();//Function to use at the start of an element

//Specify element handler
xml_set_element_handler($parser,"start","stop");

//Specify data handler
xml_set_character_data_handler($parser,"char");

//Open XML file
$fp=fopen("test.xml","r");//Read data
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))
		);
}

//Free the XML parser
xml_parser_free($parser);




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 to use at the end of an element
function stop($parser,$element_name) {
  echo "<br />";
}

//Function to use when finding character data
function char($parser,$data){
  echo $data;
}
?>

and the output i received was

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


 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top