У меня есть файл XML, который я хочу иметь доступ к последнему элементу в файле. (ПРИМЕЧАНИЕ: файл динамически обновляется, и последние значения всегда находятся в последнем элементе:
<?xml version="1.0"?>
<tran> <balance>25000</balance> <amount>560</amount> </tran> <tran> <amount>5999</amount> <balance>30999</balance> </tran> <tran> <amount>5000</amount> <balance>20000</balance> </tran> <tran> <amount>8923</amount> <balance>25000</balance> </tran>
Я хочу иметь доступ к этому последнему узлу.
Как это сделать, используя Php Simple XML?
благодаря
Во-первых, ваш XML нуждается в родительском узле (в приведенном ниже примере я вставил элемент «trans»). Затем попробуйте этот xpath:
<?php $xmlstr=<<<EOXML <?xml version="1.0"?> <trans> <tran> <balance>25000</balance> <amount>560</amount> </tran> <tran> <amount>5999</amount> <balance>30999</balance> </tran> <tran> <amount>5000</amount> <balance>20000</balance> </tran> <tran> <amount>8923</amount> <balance>25000</balance> </tran> </trans> EOXML; $xml =new SimpleXMLElement($xmlstr); $last = $xml->xpath("/trans/tran[last()]"); var_dump($last); ?>
Попробуй это :
<?php $xmlstr = <<<XML <?xml version="1.0"?> <transactions> <tran> <balance>25000</balance> <amount>560</amount> </tran> <tran> <amount>5999</amount> <balance>30999</balance> </tran> <tran> <amount>5000</amount> <balance>20000</balance> </tran> <tran> <amount>8923</amount> <balance>25000</balance> </tran> </transactions> XML; $elements = new SimpleXMLElement($xmlstr); $last_element = $elements->tran[count($elements)-1]; print_r($last_element); ?>
Вывод :
SimpleXMLElement Object ( [amount] => 8923 [balance] => 25000 )
Пытаться
$xmlString = '<?xml version="1.0"?> <doc> <tran> <balance>25000</balance> <amount>560</amount> </tran> <tran> <amount>5999</amount> <balance>30999</balance> </tran> <tran> <amount>5000</amount> <balance>20000</balance> </tran> <tran> <amount>8923</amount> <balance>25000</balance> </tran> </doc>'; $xml = simplexml_load_string($xmlString); $var = end($xml); $var = end($var); var_dump($var);
Вывод
object(SimpleXMLElement)[5] public 'amount' => string '8923' (length=4) public 'balance' => string '25000' (length=5)
Вы можете просто подсчитать элементы «tran»
//value of $i is the total count of tran element in xml $last_element_amount = $xml->tran[$i]['amount']; $last_element_balance = $xml->tran[$i]['balance'];