在php中解析xml数据返回空值

在php中解析xml数据返回空值,php,xml,xml-parsing,Php,Xml,Xml Parsing,我试图用php中的simple_load_string函数解析xml中的数据,它在$parsed data parsed中返回一个空数据 要分析的数据如下所示: <cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas"> <cas:authenticationSuccess> <cas:user>yassine458</cas:user> </cas

我试图用php中的simple_load_string函数解析xml中的数据,它在$parsed data parsed中返回一个空数据

要分析的数据如下所示:

<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
    <cas:authenticationSuccess>
        <cas:user>yassine458</cas:user>
    </cas:authenticationSuccess>
</cas:serviceResponse>
我正在尝试将其转换为json格式

$xml_string = file_get_contents('/path');
$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
然后您可以根据需要使用$json或$array。

我发现这个解决方案:

$todelete="xmlns:cas=\"http://www.yale.edu/tp/cas\"";

        $result="<cas:serviceResponse xmlns:cas=\"http://www.yale.edu/tp/cas\">
                    <cas:authenticationSuccess>
                     <cas:user>pdurant2</cas:user>
                      </cas:authenticationSuccess>
                        </cas:serviceResponse>";
        if (strpos($result, $todelete) !== false) {
            $result= str_replace($todelete,null,$result);
        }
        if (strpos($result, "cas:") !== false) {
            $result= str_replace("cas:",null,$result);

        }
        if (strpos($result, "/cas:") !== false) {
            $result= str_replace("/cas:",null,$result);

        }
        $parsed=simplexml_load_string($result);

这对我来说很有用。

当我使用xml时,我面临着同样的问题,但我找到了这个解决方案,它对我很有用

文件:-

使用

结果:-

如果您不需要cas:只需将其替换为xml格式


Tested

向我们展示代码和数据您可以看看是否有解决方案?这是无效的XML,因此很难说更多,因为我无法测试iti,我可以得到没有解析它的解决方案?如何获得变量cas:user?正如您所见,我已经展示了如何访问属性,它只是一个数组use as arrayXML2Array在我尝试编写代码时未找到。您必须复制此代码并创建一个名为XML2Array.php的文件,然后包含此文件,它将工作并更新,请查看或发送[
$todelete="xmlns:cas=\"http://www.yale.edu/tp/cas\"";

        $result="<cas:serviceResponse xmlns:cas=\"http://www.yale.edu/tp/cas\">
                    <cas:authenticationSuccess>
                     <cas:user>pdurant2</cas:user>
                      </cas:authenticationSuccess>
                        </cas:serviceResponse>";
        if (strpos($result, $todelete) !== false) {
            $result= str_replace($todelete,null,$result);
        }
        if (strpos($result, "cas:") !== false) {
            $result= str_replace("cas:",null,$result);

        }
        if (strpos($result, "/cas:") !== false) {
            $result= str_replace("/cas:",null,$result);

        }
        $parsed=simplexml_load_string($result);
    $xml = '<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
        <cas:authenticationSuccess>
            <cas:user>yassine458</cas:user>
        </cas:authenticationSuccess>
    </cas:serviceResponse>';

    $xml2array = XML2Array::createArray($xml);
    echo "<pre>";
    print_r($xml2array);
    echo "<pre>";
    echo $xml2array['cas:serviceResponse']['cas:authenticationSuccess']['cas:user'];
    Array
    (
        [cas:serviceResponse] => Array
            (
                [cas:authenticationSuccess] => Array
                    (
                        [cas:user] => yassine458
                    )

            )

    )