Reputation: 93146
i've got following example xml:
<entity id="1">
<name>computer</name>
<type>category</type>
<entities>
<entity id="2">
<name>mac</name>
<type>category</type>
</entity>
<entity id="3">
<name>linux</name>
<type>category</type>
<entities>
<entity id="4">
<name>ubuntu</name>
<type>category</type>
</entity>
<entity id="5">
<name>redhat</name>
<type>category</type>
<entities>
<entity id="6">
<name>server</name>
<type>category</type>
</entity>
<entity id="7">
<name>desktop</name>
<type>category</type>
</entity>
</entities>
</entity>
</entities>
</entity>
</entities>
</entity>
if i've got an id, lets say 5. is it possible to retrieve the following:
im a noob on parsing xml. is this accomplished by xpath only or xquery/xpath?
i would appreciate if someone could give me some example code to do this with simplexml.
thanks!
Upvotes: 0
Views: 167
Reputation: 8020
<?php
$simpleXml = simplexml_load_string($xml); // or load your file, whatever
if (($element = $simpleXml->xpath('//*[@id = 5]'))) {
var_dump($element);
echo 'Element and descendants: ', $element[0]->asXML(), PHP_EOL;
echo 'Name of the entity: ', $element[0]->name, PHP_EOL;
}
SimpleXML offers really intuitive XML processing, but it is more limited than the full DOM classes.
Upvotes: 1