如何使用SimpleXML获取标记中的属性

时间:2018-03-20 15:55:26

标签: php parsing simplexml

我不确定如何拨打我想要的电话,所以如果您能提供更准确的字词,我会更新我的问题。

我想从这样的XML网站获取数据:

<body>
    <predictions>
        <message text="message"/>
    </predictions>
    <predictions>
        <direction title="Dir1">
            <prediction epochTime="1521560640000" seconds="724" minutes="12" isDeparture="true" affectedByLayover="true" dirTag="paciland" vehicle="1606" block="22"/>
        </direction>
    </predictions>
</body>

我希望得到秒(或分钟......)值。

我找到了有关从以下结构中获取数据的信息:

<body>
    <predictions>
        <message text="message"/>
    </predictions>
    <predictions>
        <direction title="Dir1">
            <prediction>
                epochTime="1521560640000"
                seconds="724" 
                minutes="12" 
                isDeparture="true" 
                affectedByLayover="true" 
                dirTag="paciland" 
                vehicle="1606" 
                block="22"
            </prediction>
        </direction>
    </predictions>
</body>

数据不在标签中的位置。

我从未使用过SimpleXML,所以我对如何实现这一点感到有些困惑。

1 个答案:

答案 0 :(得分:2)

可以使用$element['attribute_name']来完成使用simpleXML访问属性。

以下是从seconds标记获取<prediction>属性的示例。

$xml = '<body>
    <predictions>
        <message text="message"/>
    </predictions>
    <predictions>
        <direction title="Dir1">
            <prediction epochTime="1521560640000" seconds="724" minutes="12" isDeparture="true" affectedByLayover="true" dirTag="paciland" vehicle="1606" block="22"/>
        </direction>
    </predictions>
</body>';

$xmlobj = simplexml_load_string($xml);
foreach ($xmlobj->predictions as $prediction) {
    if (isset($prediction->direction)) {
        echo $prediction->direction->prediction['minutes'];
        echo $prediction->direction->prediction['seconds'];
    }
}