php - 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;
但即使进行了一些调整,我也无济于事。任何方向的帮助表示赞赏。
解决方案
使用下面的方法
首先将其从 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
)
推荐阅读
- powershell - MS Teams - Powershell / 脚本 - Get-CsOnlineUser cmdlet 提供错误的输出 / PBX-Telephony
- testing - 如何在 Windows 上进行 WebDAV 服务器合规性测试(石蕊的 Windows 替代方案)?
- javascript - 使用 react js map 和 reducer 设置挂钩会导致下面的代码无法运行
- python - SVC 找不到属性“_probA”
- r - 使用 facet_grid 在 ggplot 中自动设置数据代表中断
- mysql - 定制 Camunda 平台
- c# - 在 TimeSeriesPredictionEngine ML.NET 时间序列 ForecastbySsa 中使用 DateTime 预测值
- python-3.x - 比较两个列表元素的更快方法
- javascript - 在 notify.js 中完成 HTML
- java - APK 不工作 膨胀 NavigationView 时出错