使用 simpleXML 解析 php xml

标签 php mysql xml

我有一个通过邮寄收到的 XML 文件。

<response>
       <id>D234>/id>
       <Logs>
          <time>UTC</time>
          <Alarms>          
          </Alarms>
       </Logs>
</response>

有时可能会有很少的告警日志

<response>
   <id>D234>/id>
   <Logs>
    <time>UTC</time>
    <Alarms>
        <Log>
            <LD>Reset </LD>
            <utc>1383704429</utc>
        </Log>
        <Log>
            <LD>Triggered </LD>
            <utc>1383601449</utc>
        </Log>
    </Alarms>
    </Logs>
</response>

我想检查是否 <Alarms>有 child ,然后形成查询以将它们插入数据库。 我试过xpath。我可以找到 child 是否在那里,我可以数数。没问题。

$xml = simplexml_load_string(POST_DATA);
$alarms = $xml->xpath('Logs/Alarms');
echo count($alarms);

但是怎样才能遍历每一条日志呢?这样我就可以形成一个查询来进入数据库。我很茫然。

例如:我怎样才能得到 Log0->time

最佳答案

试试这个:-

$alarms = $xml->xpath('Logs/Alarms/Log');
foreach ($alarms as $oneAlarm) {
    echo $oneAlarm->LD . "\n";
    echo $oneAlarm->utc . "\n";
}

关于使用 simpleXML 解析 php xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882719/

相关文章:

xml - XSLT 将 xml 转换为 xml 提取特定值并映射到新格式

javascript - 如何获取 XML 标签内的内容来创建数组?

php - 内部连接接收多个值

mysql - 将文本文件导入到一列中,并将默认值分配给mysql表的其他列

mysql - MYSQL 中的 Friendfeed 无模式数据

php - 将 Lat/Long 空间扩展插入 MySQL

Javascript:从具有相同标签名称的两个 XML 节点检索数据的可靠方法是什么?

php - 将推文合并到 MySQL 循环中

php - 将 MySQL 查询中的多个列值存储到 PHP 数组中

php - 在准备好的语句中处理 order by 和 order type 参数