以PHP最简单的方式解析XML文件

时间:2015-06-04 16:59:51

标签: php xml xml-parsing

我正在寻找使用PHP从XML文件中获取某些值的最简单方法。

<?xml version="1.0" encoding="UTF-8"?>
<oscam version="1.20-unstable_svn build r10649"   revision="10649" starttime="2015-05-27T06:41:07-0400" uptime="710700" readonly="0">
<reader label="Sky" status="OFF" caid="09C7">
    <emmstats totalwritten="0" totalskipped="0" totalblocked="0" totalerror="0">
        <emm type="unknown" result="error">0</emm>
        <emm type="unique" result="error">0</emm>
        <emm type="shared" result="error">0</emm>
        <emm type="global" result="error">0</emm>
        <emm type="unknown" result="written">0</emm>
        <emm type="unique" result="written">0</emm>
        <emm type="shared" result="written">0</emm>
        <emm type="global" result="written">0</emm>
        <emm type="unknown" result="skipped">0</emm>
        <emm type="unique" result="skipped">0</emm>
        <emm type="shared" result="skipped">0</emm>
        <emm type="global" result="skipped">0</emm>
        <emm type="unknown" result="blocked">0</emm>
        <emm type="unique" result="blocked">0</emm>
        <emm type="shared" result="blocked">0</emm>
        <emm type="global" result="blocked">0</emm>

    </emmstats>
    <ecmstats count="0" totalecm="0" lastaccess="">

    </ecmstats>
    <ecmhistory></ecmhistory>
  </reader>
</oscam>

例如,我需要获得&#34;正常运行时间&#34;和&#34;状态&#34;领域。 我试过了:

$oscam = simplexml_load_file('data.xml');
$uptime = (int) $oscam['uptime']; 
$status = (string) $oscam->reader['status'];

echo $status;

1 个答案:

答案 0 :(得分:0)

正如评论者所说,有一些可能性。 SimpleXML - 顾名思义 - 恕我直言是最简单的一个,正如你的问题所要求的那样。

那很简单。假设您的XML数据包含在字符串变量$xml中:

$oscam = simplexml_load_string($xml);
$uptime = (int) $oscam['uptime'];
$status = (string) $oscam->reader['status'];

现在,$uptime保留值710700$status保留OFF

每当您感到困惑时,您总是可以尝试使用print_r($oscam)之类的内容来查找XML如何映射到$oscam对象,从而找到所需数据的位置。