PHP:如何访问XML文件中的最后一个元素


PHP: How to access the last element in a XML file

我有一个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'];