我正在寻找使用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;
答案 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
对象,从而找到所需数据的位置。