0

ファイルの最後の要素にアクセスできるようにしたい 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を使用してこれを行うにはどうすればよいですか?

ありがとう

4

4 に答える 4

3

まず、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);

?>
于 2012-04-11T03:20:11.287 に答える
0

これを試して :

<?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
)
于 2012-04-11T03:19:23.617 に答える
0

「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'];
于 2012-04-11T08:26:35.117 に答える
0

試す

$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)
于 2012-04-11T03:33:48.183 に答える