This question already has an answer here:
<path>
<name>
<option id="6523">
<needle>Haystack</needle>
<foo>bar</foo>
</option>
<option id="6524">
<needle>Haystack</needle>
<foo>Bar</foo>
</option>
</name>
</path>
Hello again Stackoverflow!
For example, i want the Needle and the foo from option 6524, how do i get those using SimpleXML? I've tried xpath (almoast every topic here on stackoverflow suggests xpath) but that didn't work out for me! Can you guys help me?
Thanks!
Try this code:
$xml_str = '.....';
$xml = simplexml_load_string($xml_str);
$result = $xml->xpath('//name/option[@id="6524"]/foo');
echo $result[0][0];
Use xpath:
<?php
$xml = <<<XML
<path>
<name>
<option id="6523">
<needle>Haystack</needle>
<foo>bar</foo>
</option>
<option id="6524">
<needle>Haystack</needle>
<foo>Bar</foo>
</option>
</name>
</path>
XML;
$xml = new SimpleXMLElement($xml);
$options = $xml->xpath('//option[@id = "6524"]');
$opt = $options[0];
echo 'needle: ' . $opt->needle . ', foo: ' . $opt->foo;
Try something like this:
$xml = simplexml_load_string($string);
$result = $xml->xpath('/path/name/option');
while(list( , $node) = each($result)) {
echo $node->needle . " - " . $node->foo . "<br />";
}
Try this:
$result = $xml->xpath('//path/name/option[@id="6524"]');
来源:https://stackoverflow.com/questions/8105480/simplexml-get-value-where-attribute-is-variable