Wie ist es möglich ein HTML-Dokument, mit PHP4, wie eine XML-Datei
zu Parsen? Ich habe es mit SAX versucht aber musste leider festellen
das es so nicht funktioniert.
Resultat:
zu Parsen? Ich habe es mit SAX versucht aber musste leider festellen
das es so nicht funktioniert.
PHP-Code:
<?php
class FormPraser {
var $strXML = array();
var $_parser;
function FormPraser() {
$this->_parser = xml_parser_create();
xml_set_object($this->_parser, &$this);
xml_set_element_handler(
$this->_parser,
"startHandler",
"endHandler"
);
xml_set_character_data_handler(
$this->_parser,
"cdataHandler"
);
xml_parser_set_option(
$this->_parser,
XML_OPTION_CASE_FOLDING,
0
);
}
/**
* handle start element
*
* @access private
* @param resource xml parser resource
* @param string name of the element
* @param array attributes
*/
function startHandler($xp, $name, $attribs) {
printf('handle start tag: %s<br />', $name);
}
/**
* handle start element
*
* @access private
* @param resource xml parser resource
* @param string name of the element
*/
function endHandler($xp, $name) {
printf('handle end tag: %s<br />', $name);
}
/**
* handle character data
*
* @access private
* @param resource xml parser resource
* @param string character data
*/
function cdataHandler($xp, $cdata) {
printf('CDATA: %s<br />', $cdata);
}
function setInputString($strXML) {
if (is_string($strXML)) {
$this->strXML = preg_split('/(\r\n|\r|\n)/', $strXML);
}
}
function parse() {
for ($i = 0, $j = sizeof($this->strXML); $i < $j; ++$i) {
$res = xml_parse(
$this->_parser,
$this->strXML[$i],
!array_key_exists(($i + 1), $this->strXML)
);
if ($res == false) {
printf(
"XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->_parser)),
xml_get_current_line_number($this->_parser)
);
break;
}
}
xml_parser_free($this->_parser);
}
}
$sax =& new FormPraser();
$sax->setInputString(join('', file('index.htm')));
$sax->parse();
Code:
XML error: SYSTEM or PUBLIC, the URI is missing at line 1
Kommentar