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

时间:2017-06-08 12:04:05

标签: php xml xml-parsing

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

要解析的数据如下:

<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
    <cas:authenticationSuccess>
        <cas:user>yassine458</cas:user>
    </cas:authenticationSuccess>
</cas:serviceResponse>

可以使用这种格式解析数据,或者有另一种方法可以解析数据。

这是我的代码:

$xml = simplexml_load_string($result);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
$parsed= simplexml_load_string($result);

我试图将其转换为json格式

3 个答案:

答案 0 :(得分:0)

$xml_string = file_get_contents('/path');
$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);

然后您可以根据需要使用 $ json $ array

答案 1 :(得分:0)

我找到了这个解决方案:

$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);

这对我有用。

答案 2 :(得分:0)

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

文档: - https://github.com/rentpost/xml2array

OR

https://packagist.org/packages/verdant/xml2array

使用

    $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>";

访问&#34;用户&#34;

    echo $xml2array['cas:serviceResponse']['cas:authenticationSuccess']['cas:user'];

结果: -

    Array
    (
        [cas:serviceResponse] => Array
            (
                [cas:authenticationSuccess] => Array
                    (
                        [cas:user] => yassine458
                    )

            )

    )

如果您不想cas:只需将其替换为&#34;&#34;在xml;

经过测试sendbox