我试图用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格式
答案 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