HomePHP Page 2 - Searching and Replacing Nodes with SimpleXML in PHP 5
Going deeper into parsing XML strings: comparing nodes - PHP
Want to learn how to get the most out of the “simpleXML” extension that comes bundled with PHP 5? Welcome to the last part of the series “Working with simpleXML in PHP 5.” In three tutorials, this series covers topics ranging from the basics of parsing XML files with this library, to performing advanced tasks, such as searching, extracting and replacing nodes, and interoperating with the XML DOM.
To demonstrate how nodes of a given XML string can be compared, first I’ll create a PHP file that will contain the string in question. Here’s the source code for this file:
All right, now that I have an XML string to work with, take a look at the example below, which first loads the XML data onto an object and next compares a specific node with a predefined value:
require_once 'xml_string.php'; if(!$xml=simplexml_load_string($xmlstr)){ trigger_error('Error reading XML string',E_USER_ERROR); } $message=(string)$xml->user[4]->name=='Alejandro Gervasio'?'User found!':'User not found!'; echo $message;
With this example, you can learn how XML nodes can be compared and evaluated appropriately. Notice that prior to performing the comparison, string type casting is applied to the selected node, because nodes are accessed originally as objects.
With reference to the previous example, its output is the following:
User found!
Since the example you saw before is really simple, here’s another one, which also illustrates how to compare a different node of the same XML string:
require_once 'xml_string1.php'; if(!$xml=simplexml_load_string($xmlstr)){ trigger_error('Error reading XML string',E_USER_ERROR); } $message=(string)$xml->user[4]->name=='Unexistent user'?'User not found!':'User found!'; echo $message;
In this case, after executing the above script, this is the result that I get on my browser:
User not found!
As you can see, comparing nodes that belong to a given XML string is a straightforward process that doesn’t bear much discussion here. Therefore, let’s move on and learn how to locate specific XML nodes using another interesting function included with the “simpleXML” extension. I’m talking about the “Xpath()” method, which will be explained in the next few lines. Please keep on reading.