Nápověda:Parsování v PHP

Z VirtlabWiki

Přejít na: navigace, hledání

Oba skripty načítají XML soubor a pak se ho snaží zobrazit v HTML.

Poznámka: ukázka pro DOM, je realizovaná v PHP4 (v PHP5 je DOM implementován jinak).

DOM

<?php

$file = "vybaveni.xml";
$indent = "";
$showfile = file_get_contents($file);  // whatever path
$newstring = utf8_encode($showfile);          // it's important!

if(!$domDocument = domxml_open_mem($newstring))
{
	echo "Couldn't load xml...";   
	exit;
}

$rootDomNode = $domDocument->document_element();
print "<pre>";
printElements($rootDomNode);
print "</pre>";

function printElements($domNode)
{
	if($domNode)
	{
		global $indent;
		if($domNode->node_type() == XML_ELEMENT_NODE)
		{
			print "<br />".$indent."<".$domNode->node_name();
			if($domNode->has_attributes())
			{
				$attributes = $domNode->attributes();
				foreach($attributes as $domAttribute)
				{
					print " $domAttribute->name=\"$domAttribute->value\"";
				}
			}
			print ">";
			if($domNode->has_child_nodes())
			{
				$indent.="  ";
				$nextNode = $domNode->first_child();
				printElements($nextNode);
				$indent= substr($indent, 0, strlen($indent)-2);
				print "<br />".$indent."<"."/".$domNode->node_name().">";
			}
		}
		else if($domNode->node_type() == XML_TEXT_NODE)
		{
			echo(trim($domNode->node_value()));                       
		}
		$nextNode = $domNode->next_sibling();
		printElements($nextNode);
	}
}
?>


SAX

 <?php
 
 function startElement($parser, $name, $attribs)
 {
 	echo("<ul><li><$name><br/><ol>\n");
 	while(list($idex, $hodnota) = each($attribs))
 	{
 		echo("<li>$idex = $hodnota</li>\n");
 	}
 	echo("</ol>");
 }
 
 function endElement($parser, $name)
 {
 	echo("<li></$name></li>\n</ul>\n");
 }
  
 function cdata($parser, $data)
 {
 	$tmp=trim($data);
 	if(!empty($tmp))
 		 echo("data = \"$data\"<br/>\n");
 	
 }
 
 
 $parser = xml_parser_create("UTF-8");
 xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
 
 xml_set_element_handler($parser, "startElement", "endElement");
 xml_set_character_data_handler($parser, "cdata");
 
 $file="vybaveni.xml";
 if(!($fp = fopen($file, "r")))
 {
 	die("Nelze otevrit soubor");
 }
 
 while($data = fread($fp, 4096))
 {
 	if(!xml_parse($parser, $data, feof($fp)))
 	{
 		die(sprintf("Chyba %d %d", xml_get_current_line_number($parser), xml_get_current_column_number($parser)));
 	}
 }
 ?>
Osobní nástroje