Я использую travelyari api, из которого я получаю deta, как показано ниже. В этом я хочу разделить названия городов. Я пробовал много решений, но не получил успеха. Пожалуйста, помогите мне.
<APIGetCitiesResponse xmlns="http://tempuri.org/">
<APIGetCitiesResult xmlns:a="http://schemas.datacontract.org/2004/07/CRS2011AgentApi" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>311</a:ToCityID>
<a:ToCityName>Chiplun</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>2432</a:ToCityID>
<a:ToCityName>Dhartale</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>2431</a:ToCityID>
<a:ToCityName>Gaonkhadi</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>519</a:ToCityID>
<a:ToCityName>Khed</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>11</a:ToCityID>
<a:ToCityName>Mumbai</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>2429</a:ToCityID>
<a:ToCityName>Pawas</a:ToCityName>
</a:CityPair>
Вы можете использовать модуль пространства имен php xml для доступа к узлам:
$xmlString = file_get_contents("yourXMLFileName.xml");
$xml = new SimpleXMLElement($xmlString);
foreach ($xml as $out_namespace)
{
$ns = $out_namespace->getNamespaces(true);
$child = $out_namespace->children($ns['a']);
foreach ($child as $out)
{
echo "From City name: ". $out->FromCityName ." To city name : ".$out->ToCityName."</br>";
}
}
Вы можете использовать SimpleXMLElement
с xpath. //a:FromCityName|//a:ToCityName
будет запрашивать FromCityName
или ToCityName
.
Код
<?php
$xmlString ='<APIGetCitiesResponse xmlns="http://tempuri.org/">
<APIGetCitiesResult xmlns:a="http://schemas.datacontract.org/2004/07/CRS2011AgentApi" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>311</a:ToCityID>
<a:ToCityName>Chiplun</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>2432</a:ToCityID>
<a:ToCityName>Dhartale</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>2431</a:ToCityID>
<a:ToCityName>Gaonkhadi</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>519</a:ToCityID>
<a:ToCityName>Khed</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>11</a:ToCityID>
<a:ToCityName>Mumbai</a:ToCityName>
</a:CityPair>
<a:CityPair>
<a:FromCityID>2433</a:FromCityID>
<a:FromCityName>Adivare</a:FromCityName>
<a:ToCityID>2429</a:ToCityID>
<a:ToCityName>Pawas</a:ToCityName>
</a:CityPair>
</APIGetCitiesResult>
</APIGetCitiesResponse>';
$xml = new SimpleXMLElement($xmlString);
$xml->registerXPathNamespace('a', 'http://schemas.datacontract.org/2004/07/CRS2011AgentApi');
$results = $xml->xpath('//a:FromCityName|//a:ToCityName');
foreach ($results as $result) {
echo $result . "\n";
}
?>
результат
Adivare
Chiplun
Adivare
Dhartale
Adivare
Gaonkhadi
Adivare
Khed
Adivare
Mumbai
Adivare
Pawas
Справка
simplexml_load_file
?