基于值解析XML元素属性


Parsing XML element attribute based on vaule

解析许多不同类型的XML提要没有问题,并且针对每种不同的情况都有方法。我遇到过一个我不熟悉的攻击方法。

提要有元素属性,这没什么大不了的,但是元素的一些属性是这样的,其中输出是基于一个值的

tornado="0" funnelcloud="0" wallcloud="0" rotation="0" hail="1" wind="0" flood="0" flashflood="0" other="0"

基本上,如果有一个1,它会输出那个数据。那么我如何解析它,让它输出列表中的那个呢?我想我可能需要一个数组?如果有,有什么例子让我了解一下吗?

下面是我解析数据的方法。轻量级和简单。

$data = "http://www.spotternetwork.org/data.php";
$xml = simplexml_load_file($data);
foreach($xml->report as $report){
    $date = $report['stamp'];
    $narrative = $report['narrative'];
    $loc = $report['city1'];
    $tz = $report['tz'];
    $time = strtotime($date.' UTC');
    $dateInLocal = date("D g:i a", $time);

-谢谢

您需要指定使用什么来解析xml但假设它是simpleXML,您可以这样做:

$attrs = [];
foreach($report->attributes() as $a => $b) {
    $attrs[$a] = $b;
}
$value = array_search('1', $attrs);
开关:

switch ($value) {
    case 'hail':
        echo "hail stuff";
        break;
    case 'tornado':
        echo "tornado stuff";
        break;
}