将包含文件内容的XML数据提取到php
我向一个API发送一个请求,该API以XML格式发送响应 响应如下所示:将包含文件内容的XML数据提取到php,php,xml,Php,Xml,我向一个API发送一个请求,该API以XML格式发送响应 响应如下所示: <ns2:HotelInformationResponse hotelId="263933"> <customerSessionId>0ABAAA85-112B-0914-9322-CA866D907EF8</customerSessionId> <HotelSummary order="0"> <hotelId>263933</hotelId> &l
<ns2:HotelInformationResponse hotelId="263933">
<customerSessionId>0ABAAA85-112B-0914-9322-CA866D907EF8</customerSessionId>
<HotelSummary order="0">
<hotelId>263933</hotelId>
<name>Nova Platinum Hotel</name>
<address1>562 Moo 10 Pratamnak Road, Nongprue</address1>
<address2>Banglamung</address2>
<city>Pattaya</city>
<postalCode>20260</postalCode>
<countryCode>TH</countryCode>
$Geosearch = 'APICALLURLHERE';
$fileContents = file_get_contents($Geosearch);
$string_data = $fileContents;
$xml = simplexml_load_string($string_data);
$hotel_id = (string) $xml->hotelId;
$hotel_name = (string) $xml->name;
echo $hotel_id.' '.$hotel_name;
我也试过这样做:
$xml = simplexml_load_file("APICALLURLHERE");
echo $xml->hotelId;
echo $xml->name;
访问远程文件 默认情况下,fopen系列函数(包括file_get_contents和simplexml_load_file)不允许访问远程文件。这是一件非常好的事情,应该保持这种状态 如果要启用远程文件,必须更改PHP配置
XML文件中的错误 如果文件加载正常,但XML仍然无法正常工作,则可能是XML文件已损坏。您可以使用此代码段调试这些问题:
$doc = simplexml_load_string($xmlstr);
if (!$doc) {
$errors = libxml_get_errors();
foreach ($errors as $error) {
echo display_xml_error($error, $xml);
}
libxml_clear_errors();
}
顺便说一下,它的
hotelId
不是hotelId
。那么问题是什么呢?这是一个输入错误,但没有任何区别,更正。这是完整的回答吗?在这方面非常简单,如果我直接复制示例xml,这也是我的答案,就像您的答案一样。你必须发布完整的一个。最有可能的是,仍然有一些东西并没有发布在这里,问题更新了完整的回答;回显文件获取内容($url)代码>整个响应都会打印出来,所以这不可能是问题所在吗?你是对的,但是我想到的另一个问题是一个损坏的XML文件。错误日志中有什么内容以及simplexml\u load\u something()的响应是什么?针对潜在的xml错误更新了答案
$doc = simplexml_load_string($xmlstr);
if (!$doc) {
$errors = libxml_get_errors();
foreach ($errors as $error) {
echo display_xml_error($error, $xml);
}
libxml_clear_errors();
}