Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中将xml转换为数组?_Php_Xml - Fatal编程技术网

如何在php中将xml转换为数组?

如何在php中将xml转换为数组?,php,xml,Php,Xml,我的代码如下: $xmlstring = '<Response> <Auth> <UserID>test</UserID> <UserIP>123</UserIP> <XmlVersion>Testing Version</X

我的代码如下:

$xmlstring = '<Response>
                    <Auth>
                        <UserID>test</UserID>
                        <UserIP>123</UserIP>
                        <XmlVersion>Testing Version</XmlVersion>
                    </Auth>
                    <SearchAvailRequest>
                        <CountryCd>ID</CountryCd>
                        <CityCd>JOG</CityCd>
                        <CheckIn>2016-01-08</CheckIn>
                        <CheckOut>2016-01-09</CheckOut>
                    </SearchAvailRequest>
                    <SearchAvailResponse>
                        <Hotel>
                            <HotelNo>1</HotelNo>
                            <HotelCode>321</HotelCode>
                            <HotelName>Test 1 Hotel</HotelName>
                            <RmGrade>Deluxe</RmGrade>
                            <RmGradeCode>DLX</RmGradeCode>
                        </Hotel>
                        <Hotel>
                            <HotelNo>2</HotelNo>
                            <HotelCode>212</HotelCode>
                            <HotelName>Test 2 & 1 Hotel</HotelName>
                            <RmGrade>Deluxe</RmGrade>
                            <RmGradeCode>DLX</RmGradeCode>
                        </Hotel>
                    </SearchAvailResponse>
                </Response>';

    $xml = simplexml_load_string($xmlstring, "SimpleXMLElement", LIBXML_NOCDATA);
    $json = json_encode($xml);
    $array = json_decode($json,TRUE);
    echo '<pre>';print_r($array);echo '</pre>';
?>
$xmlstring='0
测试
123
测试版本
身份证件
慢跑
2016-01-08
2016-01-09
1.
321
测试1酒店
豪华的
DLX
2.
212
测试2&1酒店
豪华的
DLX
';
$xml=simplexml\u load\u字符串($xmlstring,“simplexmlement”,LIBXML\u NOCDATA);
$json=json_encode($xml);
$array=json_decode($json,TRUE);
回声';打印(数组);回声';
?>
我想将XML转换为PHP数组。 但我发现了这样一个错误:

$xmlparser = xml_parser_create();
xml_parse_into_struct($xmlparser,$xmlstring,$values);
xml_parser_free($xmlparser);
print_r($values);
警告:simplexml\u load\u string():实体:第24行:解析器错误:第268行的C:\xampp\htdocs\ngetest\xml.php中没有名称
警告:simplexml\u load\u string():第268行C:\xampp\htdocs\ngetest\xml.php中的测试2和1 Hotel
警告:C:\xampp\htdocs\ngetest\xml.php中的simplexml\u load\u string():^268行
这似乎是因为存在和符号(测试2和1酒店)。 我没有找到解决这个问题的正确方法

对我如何解决这个问题有什么建议吗

非常感谢

试试这个:

希望这对您有所帮助。

试试这个:


希望这对您有所帮助。

@Chetan Ameta,非常感谢。它起作用了。我添加如下代码:
$xmlstring=str_replace('&','amp;',$xmlstring)
@Chetan Ameta,非常感谢。它起作用了。我添加如下代码:
$xmlstring=str_replace('&','amp;',$xmlstring)
$xmlparser = xml_parser_create();
xml_parse_into_struct($xmlparser,$xmlstring,$values);
xml_parser_free($xmlparser);
print_r($values);