首页 > 解决方案 > PHP XML 最后一个数组到 Int

问题描述

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

但即使进行了一些调整,我也无济于事。任何方向的帮助表示赞赏。

标签: phpxmlxpath

解决方案


使用下面的方法

首先将其从 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
)

推荐阅读