Here's a bit more info to help you: The file is a VERY small XML file -- about 1k. It contains XHtml plus extra tags and a little PHP (it's actually an HTML template I'm trying to parse).
The code I'm using follows:
function parseFormTemplate($filename) {
$parser = xml_parser_create();
xml_set_element_handler($parser, 'startFormPageElement', 'endFormPageElement');
$fp = fopen($filename, "r") or die("Could not open ".$filename);
while($data = fread($fp, filesize($filename))) {
xml_parse($parser, $data, feof($fp));
}
if(xml_get_error_code($parser)) {
echo("An XML error occurred: ".xml_get_error_code($parser).": ".xml_error_string($parser)." Line: ".xml_get_current_line_number($parser)." Column: ".xml_get_current_column_number($parser)."<br />");
}
xml_parser_free($parser);
}
function startFormPageElement($parser, $name, $attr) {
if(strtolower($name) == 'content') {
if(($attrName = $attr["NAME"]) && ($attrType = $attr["TYPE"])) {
switch (strtolower($attrType)) {
case 'text':
$inputType = "<input type=text name=".$attrName." size=25>";
break;
case 'textarea':
$inputType = "<input type=textarea name=".$attrName." size=25>";
break;
case 'image':
$inputType = "Image Url: <input type=text name=".$attrName."-image size=50> Link Url: <input type=text name=".$attrName."-link size=50>";
break;
case 'link':
$inputType = "<br /><textarea name=".$attrName." cols=50 rows=25></textarea>";
break;
case 'include' :
$inputType = "<?php listIncludes(); ?>";
break;
default :
$inputType = "An error occured while parsing this value.";
break;
}
echo($attrName.": ".$attrName);
} else {
echo("Error parsing XML Doc -- no attributes");
}
} else {
echo("Not content");
}
}
function endFormPageElement($parser, $name, $attr) {
//Nothing to do here
}
Hope that helps. Thanks again!