PHP XML最后一个数组到Int

时间:2018-05-27 22:51:22

标签: php xml xpath

我有一个XML文件(filename.xml)不断被添加到:

<archive>
  <unit id="14044669018">
    <data>Testing #1</data>
    <link/>
    <img/>
    <tpimg/>
    <odate>14:04:46 69 018</odate>
    <gdate>2018-05-27 14:04:46</gdate>
  </unit>
  <unit id="14045769018">
    <data>Testing #2 with link</data>
    <link>https://website.com/user_xml/index.php</link>
    <img/>
    <tpimg/>
    <odate>14:04:57 69 018</odate>
    <gdate>2018-05-27 14:04:57</gdate>
  </unit>
  <unit id="14051169018">
    <data>Testing #3 with img link</data>
    <link/>
    <img/>
    <tpimg>https://website.com/ex.jpg</tpimg>
    <odate>14:05:11 69 018</odate>
    <gdate>2018-05-27 14:05:11</gdate>
  </unit>
</archive>

我想首先将最后一个unit转换为数组,然后转换为单个int,以便它们可以在不同区域中回显。

尝试了7个DOM和xpath示例,包括我认为可行的这个示例:

$filename = 'filename.xml';
$xml = simplexml_load_file($filename);
$last = $xml->xpath('/archive/unit[last()]'); 
$last = $last[0]; // <data> (example)
echo $last;

但即使经过一些调整,我也无处可去。感谢任何方向帮助。

1 个答案:

答案 0 :(得分:0)

使用以下方法

首先将它从XML转换为数组,然后只获取最后一个元素

$object = simplexml_load_string($xml);
$json  = json_encode($object);
$final_array = json_decode($json, true);
$last = end($final_array ['unit']);

输出如下:

Array
(
    [@attributes] => Array
        (
            [id] => 14051169018
        )

    [data] => Testing #3 with img link
    [link] => Array
        (
        )

    [img] => Array
        (
        )

    [tpimg] => https://website.com/ex.jpg
    [odate] => 14:05:11 69 018
    [gdate] => 2018-05-27 14:05:11
)