Цикл через XML и хранить данные в таблице MySQL - PullRequest
0 голосов
/ 09 мая 2018

Вывод XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<Country code="GR">

   <Regions>
      <Region translation="null">Athens Airport</Region>
      <Region translation="null">Athens Coast</Region>
      <Region translation="null">Athens Suburbs-Attica</Region>
      <Region translation="null">Athens</Region>
      <Region translation="null">Central Greece-Etoloakarnania</Region>
      <Region translation="null">Central Greece-Evritania</Region>
      <Region translation="null">Central Greece-Ioannina</Region>
      <Region translation="null">Central Greece-Karditsa</Region>
      <Region translation="null">Central Greece-Larissa</Region>
      <Region translation="null">Central Greece-Magnissia</Region>
   </Regions>
</Country>

В каждом регионе есть города, и следующим образом

<?xml version="1.0" encoding="UTF-8"?>
<Country code="GR">
   <Cities>
      <City translation="null">Acharnes</City>
      <City translation="null">Achladies</City>
      <City translation="null">Achladochori</City>
      <City translation="null">Adamas</City>
      <City translation="null">Afandou</City>
      <City translation="null">Afiartis</City>
      <City translation="null">Agali</City>
      <City translation="null">Aghia Anna</City>
      <City translation="null">Aghia Paraskevi</City>
</Cities>

Мне нужно вставить все города в каждом регионе и стране в таблицу,В стране много регионов, а в регионе несколько городов.Я попробовал

$regions = array("GR" => "Greece", "BR" => "Brazil", "US" => "USA");

foreach ($regions as $code => $country) {

    $url = "URL which gives an xml output"
    file_put_contents($code . '.xml', file_get_contents($url));

    $xml = simplexml_load_file($code".xml") or die("Error: Cannot create object");

    foreach ($xml->children() as $row) {
        $region = $row->Region;
    }
}

Как мне пройти через цикл и сохранить его в mysql ..?ТИА

Ответы [ 2 ]

0 голосов
/ 10 мая 2018
$regions = array("US" => "USA", "FR" => "France", "AU" => "Australia");
    foreach ($regions as $code => $country) {

        $url = "URL oes here which ives an xml output";
        file_put_contents($code . '.xml', file_get_contents($url));

        $xml = simplexml_load_file($code.".xml") or die("Error: Cannot create object");

            foreach ($xml->children() as $row) {
                $region = $row->Region;

                    foreach ($region as $RegionName) {

                        $cityURL = "URL which gives city xml data for regions";

                        file_put_contents('Cities.xml', file_get_contents($cityURL));

                        $xml2 = simplexml_load_file("Cities.xml") or die("Error: Cannot create object");

                            foreach ($xml2->children() as $row2) {
                                $city = $row2->City;

                                    foreach ($city as $cityName) {

                                    //Code to add to database

                                    }
                            }
                    }
            }
    }

Это выполнит работу именно так, как требуется.

0 голосов
/ 09 мая 2018

Если ваш вывод .XML выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<Country>
    <Code></Code>
    <Regions>
        <Region>
            <Name></Name>
            <Cities>
                <City></City>
                <City></City>
                <City></City>
            </Cities>
        </Region>
        <Region>
            <Name></Name>
            <Cities>
                <City></City>
                <City></City>
                <City></City>
            </Cities>
        </Region>
    </Regions>
</Country>
<Country>
    <Code></Code>
    <Regions>
        <Region>
            <Name></Name>
            <Cities>
                <City></City>
                <City></City>
                <City></City>
            </Cities>
        </Region>
        <Region>
            <Name></Name>
            <Cities>
                <City></City>
                <City></City>
                <City></City>
            </Cities>
        </Region>
    </Regions>
</Country>

Вы должны сделать это в своем php:

$url = "URL which gives an xml output";
$xml = new SimpleXMLElement($url);
foreach($xml->children() as $country){
    // Query to insert the country into the countries table by $country->Code
    foreach($country->Regions as $region){
        // Query to insert the region into the regions table by $country->Code and $region->Name
        foreach($region->Cities as $city){
            // Query to insert the city into the cities table by $country->Code and $region->Name and $city->City
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...