“如何读取这种XML格式”&书信电报;失水事故:用户>&引用;在php中转换为数组或对象

“如何读取这种XML格式”&书信电报;失水事故:用户>&引用;在php中转换为数组或对象,php,xml,Php,Xml,如何在PHP中读取这种XML格式 <Data xmlns:loc="loc"> <loc:user> <loc:userID>12861320</loc:userID> <loc:userMSISDN>244642867</loc:userMSISDN> <loc:us

如何在PHP中读取这种XML格式

<Data xmlns:loc="loc">
                <loc:user>
                    <loc:userID>12861320</loc:userID>
                    <loc:userMSISDN>244642867</loc:userMSISDN>
                    <loc:userExpiryDate>2019-06-30 17:09:05</loc:userExpiryDate>
                    <loc:userStatus>QUEUE</loc:userStatus>
                </loc:user>             </Data>

12861320
244642867
2019-06-30 17:09:05
排队

我正在使用SimpleXMLElement,但它无法读取这些数据

您可以尝试以下代码:

$xml = '<Data xmlns:loc="loc">
            <loc:user>
                <loc:userID>12861320</loc:userID>
                <loc:userMSISDN>244642867</loc:userMSISDN>
                <loc:userExpiryDate>2019-06-30 17:09:05</loc:userExpiryDate>
                <loc:userStatus>QUEUE</loc:userStatus>
            </loc:user>             
        </Data>';


$xml= preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $xml); // adding this worked for me
$array = json_decode(json_encode((array)simplexml_load_string($xml)),true);

echo "<pre>";
print_r($array);
echo "</pre>";

我使用的是SimpleXMLElement,但它无法读取具有名称空间的XML数据。
xmlns:loc
的实际值是名称空间。SimpleXML和DOM可以很好地用名称空间解析XML,这里不需要使用字符串函数并删除该信息。
Array
(
    [locuser] => Array
        (
            [locuserID] => 12861320
            [locuserMSISDN] => 244642867
            [locuserExpiryDate] => 2019-06-30 17:09:05
            [locuserStatus] => QUEUE
        )

)