我得到了一个" xls"来自网络服务的回复。不幸的是,该服务仅返回此格式。我想将此文件解析为xml或json。我使用框架symfony。存在任何用于处理XLS文件的包,您会推荐哪种?
或者我可以用平坦的PHP解决这个问题吗?
更新
xls响应看起来像这样,在这里我可以展示前几个linse:
<?xml version="1.0" encoding="UTF-8"?>
<xls:XLS xmlns:xls="http://www.opengis.net/xls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" version="1.1" xsi:schemaLocation="http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/RouteService.xsd">
<xls:ResponseHeader xsi:type="xls:ResponseHeaderType" sessionID="unknown"/>
<xls:Response xsi:type="xls:ResponseType" requestID="unknown" version="1.1" numberOfResponses="1">
<xls:DetermineRouteResponse xsi:type="xls:DetermineRouteResponseType">
<xls:RouteSummary>
<xls:TotalTime>PT22M7S</xls:TotalTime>
<xls:TotalDistance uom="KM" value="33.7"/>
<xls:BoundingBox srsName="EPSG:4326">
<gml:pos>7.8854063 49.9412442</gml:pos>
<gml:pos>8.2769550 50.0041191</gml:pos>
</xls:BoundingBox>
</xls:RouteSummary>
......
如果我尝试使用&#34; simplexml_load_string&#34;解析响应。该函数仅返回以下输出。
class SimpleXMLElement#1341 (1) {
public $@attributes =>
array(1) {
'version' =>
string(3) "1.1"
}
}
该函数仅显示版本而不显示子节点。我如何访问子节点?
我尝试使用以下语法访问孩子:
$xml = simplexml_load_string($response);
var_dump($xml->children('xls', true)->Response->numberOfResponses);
但没有任何成功。
解决
现在我解决了我的问题。
$xml = simplexml_load_string($response);
echo $xml->children('http://www.opengis.net/xls')->Response->DetermineRouteResponse->RouteSummary->TotalTime;