Searching and Replacing Nodes with SimpleXML in PHP 5
$xmlstr=<<<XML
<?xml version=”1.0″ encoding=”iso-8859-1″?>
<users>
<user>
<name>John Doe</name>
<address>Binary Avenue 1234 FL</address>
<email>john@john-domain.com</email>
<gender type=”male”>1</gender>
<gender type=”female”>2</gender>
</user>
<user>
<name>Janet Smith</name>
<address>Crazy Bits Road 4568 CA</address>
<email>janet@janet-domain.com</email>
<gender type=”male”>1</gender>
<gender type=”female”>2</gender>
</user>
<user>
<name>James Smith</name>
<address>Socket Boulevard 7894 OH</address>
<email>james@james-domain.com</email>
<gender type=”male”>1</gender>
<gender type=”female”>2</gender>
</user>
<user>
<name>Silvia Wilson</name>
<address>Protocol Avenue 5652 NY</address>
<email>silvia@silvia-domain.com</email>
<gender type=”male”>1</gender>
<gender type=”female”>2</gender>
</user>
<user>
<name>Alejandro Gervasio</name>
<address>Boulevard of Objects 10101 AR</address>
<email>alejandro@alejandro-domain.com</email>
<gender type=”male”>1</gender>
<gender type=”female”>2</gender>
</user>
</users>
XML;
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.
Leave a Reply