tag_tree=array();
$this->stack=array();
}
function GetRoot()
{
return $this->stack[0];
}
function SetXMLData( &$xml_data )
{
$this->xml_parser = xml_parser_create();
xml_set_object( $this->xml_parser, &$this );
xml_set_element_handler($this->xml_parser, "_startTag", "_endTag");
xml_set_character_data_handler($this->xml_parser, "_characterData");
$data = xml_parse($this->xml_parser,$xml_data);
if(!$data) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->xml_parser)),
xml_get_current_line_number($this->xml_parser)));
}
xml_parser_free($this->xml_parser);
}
function _startTag($parser, $name, $attrs) {
$tag = new tag($name,$attrs,'');
array_push($this->stack,$tag);
}
function _characterData($parser, $data) {
// eval($this->path." = '".trim($data)."';");
$cnt=count($this->stack);
$this->stack[$cnt-1]->value.=trim($data);
}
function _endTag($parser, $name) {
$cnt=count($this->stack);
$this->stack[$cnt-2]->childNodes[] = $this->stack[$cnt-1];
array_pop($this->stack);
}
}
function Debug($s)
{
print "\nDebug: ".HTMLEntities($s)."
\n";
}
$XML =''."\n";
$XML.=''."\n";
$XML.=' '."\n";
$XML.=' Adam'."\n";
$XML.=' Eve'."\n";
$XML.=' '."\n";
$XML.=' '."\n";
$XML.=' God'."\n";
$XML.=' '."\n";
$XML.=''."\n";
$XML.=''."\n";
$XML.=' '."\n";
$XML.=' Clinton'."\n";
$XML.=' Bush'."\n";
$XML.=' '."\n";
$XML.=' '."\n";
$XML.=' Tony'."\n";
$XML.=' Baggins'."\n";
$XML.=' '."\n";
$XML.=''."\n";
$XML.=''."\n";
Debug($XML);
$xmldoc= & new XmlDom();
$xmldoc->SetXMLData($XML);
$rt=$xmldoc->GetRoot(); //countries
$countries=$rt->selectNodes("COUNTRY");
print("\n");
print("Country | City | User |
\n");
foreach ($countries as $country)
{
$cntrname=$country->getAttribute("NAME");
$cities=$country->selectNodes("CITY");
foreach ($cities as $city)
{
$cityname=$city->getAttribute("NAME");
$users=$city->selectNodes("USER");
foreach ($users as $user)
{
$username=$user->value;
print("$cntrname | $cityname | $username |
\n");
}
}
}
print("
\n");
print("
\n");
print("Select users living in capital city:
\n");
$usersincapital=$rt->selectNodes("COUNTRY/CITY[@CAPITAL='1']/USER");
foreach ($usersincapital as $user)
{
$username=$user->value;
print("$username
\n");
}
print("
\n");
highlight_file ( "objxml.php");
?>