Introduction
Hi guys. In this article we are going to understand the concept of PHP Expat
parser & XML DOM. First of all we need to know about XML. XML is used to
describe data and to focus on what data is. An XML file describes the structure
of the data. There are only user defined tags in XML.
XML Expat Parser with PHP
Here in this section we will understand the use of Xml Expat parser. To read
and update - create and manipulate - an XML document, for this purpose you
required an XML parser.
Two basic types of XML parsers
- Tree-based parser.
- Event-based parser.
Tree-based parser
This parser transforms an XML document into a tree structure. It analyzes the
whole document, and provides access to the tree elements. e.g. the Document
Object Model (DOM).
Event-based parser
Views an XML document as a series of events. When a specific event occurs, it
calls a function to handle it
Expat parser is an event-based parser
- Event-based parsers focus on the content
of the XML documents
- Event-based parsers not focus on their
structure.
- Event-based parsers can access data faster
than tree-based parsers.
Lets have a concept with example
<from>Deepak</from>
Description of above tag
An event-based parser reports the XML above as
a series of 3 events
- Start element: from
- Start CDATA section, value: Deepak
- Close element: from
Note : The XML Expat parser functions are part
of the PHP core. There is no installation needed to use these functions.
XML File
<?xml
version="1.0"
encoding="ISO-8859-1"?>
<note>
<to>Prerna
kaul</to>
<from>Deepak
dwij</from>
<heading>Reminder</heading>
<body>Happy
new year 2012!</body>
</note>
Save it by xm.xml
PHP script for using the concept
<html>
<body
bgcolor="lightgreen">
<center>
<h4>
XML Expat Parser ! <h4>
<hr>
<?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("xm.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);
?>
</center>
</body>
</html>
Save it by xmlp.php
Output
To run the code, Open the XAMPP server and start the services like Apache and
MySQL. Open the browser type: http://localhost/yourfoldername/xmlp.php
XML DOM with PHP
In this section we are going a have XML DOM concept. The concept is based on the
built-in DOM parser that makes it possible to process XML documents in PHP.
Lets have a meaning of DOM in brief.
DOM provides a standard set of objects for HTML and XML documents, and a
standard interface for accessing and manipulating them. DOM is separated
into different parts (Core, XML, and HTML) and different DOM Levels.
- Core DOM - defines a standard set of
objects for any structured document.
- XML DOM - defines a standard set of
objects for XML documents.
- HTML DOM - defines a standard set of
objects for HTML documents.
PHP script for the DOM concept
<html>
<body
bgcolor="lightgreen">
<center>
<h4>
PHP XML DOM ! <h4>
<hr>
<?php
$xmlDoc =
new
DOMDocument();
$xmlDoc->load("xm.xml");
print
$xmlDoc->saveXML();
?>
</center>
</body>
</html>
Save it as dom.php.
Output
To run the code, Open the XAMPP server and start the services like Apache and
MySQL. Open the browser type: http://localhost/yourfoldername/dom.php
Thanks !