Ответы пользователя по тегу XML
  • Как сделать Импорт данных из csv в несколько xml?

    iResource
    @iResource
    Разработчик IR XML2Ozon
    Может, мне проще сделать это вообще на php на сервере, чтобы не было привязки к excel

    Так я и сделал бы.
    Через функцию, код которой приведу ниже, - прочитать CSV в массив, и потом в переборе массива генерировать нужные XML через, к примеру, SimpleXML.
    Пример функции чтения CSV - можно читать только нужные столбцы, экономить память:

    // чтение CSV в удобный массив
    if (!function_exists('csv2array')) {
        // $only_fields - массив с названиями нужных столбцов
        function csv2array($file, $charset_in = 'windows-1251', $charset_out = 'utf-8', $only_fields = [])
        {
            $handle = fopen($file, 'r');
            if ($handle === false) {
                echo 'Не удалось открыть файл '.$file;
                return false;
            }
            $data = $fields = [];
            $i = 0;
            if ($handle) {
                while (($row = fgetcsv($handle, 0, ';')) !== false) {
                    if (empty($fields)) {
                        foreach ($row as $k => $r) {
                            $row[$k] = iconv($charset_in, $charset_out.'//IGNORE', $r);
                        }
                        $fields = $row;
                        continue;
                    }
                    foreach ($row as $k => $value) {
                        if (!empty($fields[$k])) {
                            if (!empty($only_fields) && is_array($only_fields) && !in_array($fields[$k], $only_fields)) {
                                continue;
                            }
                            $value = iconv($charset_in, $charset_out.'//IGNORE', $value);
                            $data[$i][$fields[$k]] = $value;
                        }
                    }
                    $i++;
                }
                if (!feof($handle)) {
                    echo 'Error: unexpected fgets() fail'.PHP_EOL;
                }
                fclose($handle);
            }
            return $data;
        }
    }
    Ответ написан
    Комментировать
  • Как прочитать xml с другого URL средствами php?

    iResource
    @iResource
    Разработчик IR XML2Ozon
    Зачем load_string и file_get_contents?
    Есть же simplexml_load_file.
    Можно сразу строить объект Simple XML с источником по ссылке:
    $xml = simplexml_load_file($xmlfile);
    Ну и потом работайте с ним средствами Simple XML:
    https://www.php.net/manual/ru/simplexml.examples-b...
    Ответ написан
    Комментировать