tags:

views:

29

answers:

2

I have a XML file

<?xml version="1.0" encoding="UTF-8"?>
<xml>
<events date="12/12/2010">
<event>
<title>JqueryEvent</title>
<description>
  easily
</description>
</event>
</events>
<events date="14/12/2011">
<event>
<title>automatically onBlur</title>
<description>
 when a date is selected. For an inline calendar, simply attach the datepicker to a div or span.
</description>
</event>
</events>
</xml>

and iI am using this XQuery and XPath to select the nodes

   $xml_str = file_get_contents($file);
    $xml = simplexml_load_string($xml_str);
    $nodes = $xml->xpath('//xml/events');
    return $nodes;

It will select all the nodes.I want to select the nodes based on the date . please help me

+1  A: 

Specify the date in the xpath expression,

i.e.

$nodes = $xml->xpath('//xml/events[@date="14/12/2011"]');

would select only the last events-node in the example

Ledhund
A: 

Use

$xml = simplexml_load_string($xml);
$nodes = $xml->xpath('//events[@date="14/12/2011"]');
print_r( $nodes );

to get the event node below the xml node with the specified date and

$xml = simplexml_load_string($xml);
$nodes = $xml->xpath('//xml/events[@date]');
print_r( $nodes );

to get all event below the xml node nodes having a date attribute. Likewise, use

$xml = simplexml_load_string($xml);
$nodes = $xml->xpath('//events[contains(@date, "2011")]');
print_r( $nodes );

to find all event nodes anywhere in the document with a date attribute containing the string "2011".

On a sidenote, you can use simplexml_load_file to load an XML file directly.

Gordon