This question already has an answer here:
In an xml respone below
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
</lst>
<lst name="initArgs">
<lst name="defaults">
<str name="config">../conf/dataconfig.xml</str>
</lst>
</lst>
<str name="status">busy</str>
<str name="importResponse">A command is still running...</str>
<lst name="statusMessages">
<str name="Time Elapsed">0:0:7.942</str>
<str name="Total Requests made to DataSource">1</str>
<str name="Total Rows Fetched">8831</str>
<str name="Total Documents Processed">8830</str>
<str name="Total Documents Skipped">0</str>
<str name="Full Dump Started">2013-06-03 22:15:11</str>
</lst>
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>
I need to access two values:
<str name="status">busy</str> -- busy
<str name="Total Rows Fetched">8831</str> -- 8831
Using code below:
$xml = simplexml_load_string($string);
echo $xml->str[0];
I am able to access value "busy" but I don't know how to access "8831".
</div>
use Xpath:
$xml = simplexml_load_string($x); // assuming XML in $x
echo $xml->xpath("//str[@name='status']")[0];
and do the same with the other value.
Use var_dump($xml); to understand xml object. Read Example #1 Interpret an XML string example http://php.net/manual/en/simplexmlelement.attributes.php It will be something like,
foreach($xml->foo[0]->attributes() as $a => $b) {
if($a=="Total Rows Fetched"){
echo $b;
}
}