$xml=new DomDocument('1.0','UTF-8'); // Создаем документ
$sorts = $xml->appendChild($xml->createElement('sorts')); // Создаем корень документа
$sort = $sorts->appendChild($xml->createElement('sort')); // Создаем группу в корне документа
$name = $sort->appendChild($xml->createElement('name')); // Создаем подгруппу внутри группы
$name->appendChild($xml->createTextNode('Яблоко')); // Присваиваем значения подгруппам
$xml->formatOutput = true; // устанавливаем выходной формат документа в true
$xml->save('yandex.xml'); // сохраняем файл
Файл создаётся, но нужно создать <?xml version="1.0" encoding="windows-1251"?>
Пробовал так:
$xml=new DomDocument('1.0','windows-1251'); // Создаем документ
$sorts = $xml->appendChild($xml->createElement('sorts')); // Создаем корень документа
$sort = $sorts->appendChild($xml->createElement('sort')); // Создаем группу в корне документа
$name = $sort->appendChild($xml->createElement('name')); // Создаем подгруппу внутри группы
$name->appendChild($xml->createTextNode('Яблоко')); // Присваиваем значения подгруппам
$xml->formatOutput = true; // устанавливаем выходной формат документа в true
$xml->save('yandex.xml'); // сохраняем файл
Но выдаёт ошибку: "DOMDocument::save() [function.DOMDocument-save]: output conversion failed due to conv error, bytes 0xDF 0xE1 0xEB 0xEE ..."
Как быть???
Спустя 21 минута, 30 секунд (15.09.2011 - 17:27) caballero написал(а):
сам php файл сделай в виндовой кодировке
Спустя 12 минут, 41 секунда (15.09.2011 - 17:40) segazav написал(а):
Попробовал так:
Но выдал ошибку: "Warning: DOMDocument::save() [function.DOMDocument-save]: output conversion failed due to conv error, bytes 0xDF 0xE1 0xEB 0xEE ..."
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Пробный файл</title>
</head>
<body>
[php]
$xml=new DomDocument('1.0','Windows-1251'); // Создаем документ
$sorts = $xml->appendChild($xml->createElement('sorts')); // Создаем корень документа
$sort = $sorts->appendChild($xml->createElement('sort')); // Создаем группу в корне документа
$name = $sort->appendChild($xml->createElement('name')); // Создаем подгруппу внутри группы
$name->appendChild($xml->createTextNode('Яблоко')); // Присваиваем значения подгруппам
$xml->formatOutput = true; // устанавливаем выходной формат документа в true
$xml->save('yandex.xml'); // сохраняем файл
[/php]
</body>
</html>
Но выдал ошибку: "Warning: DOMDocument::save() [function.DOMDocument-save]: output conversion failed due to conv error, bytes 0xDF 0xE1 0xEB 0xEE ..."
Спустя 1 минута, 41 секунда (15.09.2011 - 17:41) twin написал(а):
Мыши плакали, кололись, но продолжали жрать кактус...
Не будет толку от этих местечковых кодировок. Сейчас XML не работает, завтра аякс забрагозит, послезавтра...
Ну что так трудно один раз уяснить себе что UTF - это единственно правильная кодировка.
И пока не поздно все поменять.
Спустя 6 минут, 35 секунд (15.09.2011 - 17:48) Winston написал(а):
Спустя 1 минута, 59 секунд (15.09.2011 - 17:50) alex12060 написал(а):
segazav
iconv() ?
iconv() ?
Спустя 53 секунды (15.09.2011 - 17:51) caballero написал(а):
файл с ИСХОДНЫМ кодом преобразуй блокнотом в виндовую кодировку
замени яблоко на apple если заработает значит кодировка файла
замени яблоко на apple если заработает значит кодировка файла
Спустя 3 минуты, 31 секунда (15.09.2011 - 17:54) segazav написал(а):
Но почему тогда Яндекс Авто требует, чтобы в заголовке XML файла было <?xml version="1.0" encoding="windows-1251"?>
Вот смотрите сами: http://help.yandex.ru/webmaster/?id=1114016
Вот смотрите сами: http://help.yandex.ru/webmaster/?id=1114016
Спустя 40 минут, 23 секунды (15.09.2011 - 18:35) segazav написал(а):
Даже так не работает???
В браузере все нормально выдаёт, а файл создается пустой с четырьмя чистыми строками.
$result = mysql_query ("SELECT * FROM doska WHERE podrazd='Легковые автомобили' ORDER BY id DESC",$db);
$myrow = mysql_fetch_array ($result);
// Откроем файл (если он есть) или создадим его
$fp = fopen ("yandex_auto.xml", "a+");
// "Внедрим" нужные нам XML-тэги вручную
print "<?xml version=\"1.0\" encoding=\"windows-1251\"?>\n";
print "<dataset>\n";
while($myrow = mysql_fetch_array ($result))
{
print "<row>\n";
print "<name>".$myrow["marka"]."</name>\n";
print "<category>".$myrow["model"]."</category>\n";
print "</row>\n";
}//endwhile
print "</dataset>\n";
// Вывод будем осуществлять в файл (yandex_auto.xml)
fputs($fp,"\n");
fputs($fp,"\n");
while($myrow = mysql_fetch_array ($result))
{
fputs($fp,"\n");
fputs($fp,"".$myrow["marka"]."\n");
fputs($fp,"".$myrow["model"]."\n");
fputs($fp,"\n");
}//endwhile
fputs($fp,"\n");
fclose($fp);
В браузере все нормально выдаёт, а файл создается пустой с четырьмя чистыми строками.
Спустя 3 минуты, 58 секунд (15.09.2011 - 18:39) caballero написал(а):
базе скажи через SET NAMES обы выдавала виндовую кодировку
и браузеру скажи что ты посылаешь
header("Content-Type: и т.д.
и браузеру скажи что ты посылаешь
header("Content-Type: и т.д.
Спустя 14 минут, 29 секунд (15.09.2011 - 18:53) Invis1ble написал(а):
10.5 месяцев на форуме, а до сих пор поповщина
Цитата |
В браузере все нормально выдаёт, а файл создается пустой с четырьмя чистыми строками. |
потому что второй цикл с 0 итерациями
Спустя 8 минут, 43 секунды (15.09.2011 - 19:02) segazav написал(а):
А что такое: "потому что второй цикл с 0 итерациями" и что с этим делать???
Спустя 2 минуты, 56 секунд (15.09.2011 - 19:05) Invis1ble написал(а):
Цитата |
А что такое: "потому что второй цикл с 0 итерациями" |
это значит, что
Цитата |
$myrow = mysql_fetch_array ($result) |
всегда будет false в данном случае.
Цитата |
и что с этим делать??? |
переписать код, например переместить блок записи в файл в первый цикл.
Спустя 17 минут, 9 секунд (15.09.2011 - 19:22) segazav написал(а):
Да но как тогда записать это:
в созданный файл?
// "Внедрим" нужные нам XML-тэги вручную
print "<?xml version=\"1.0\" encoding=\"windows-1251\"?>\n";
print "<dataset>\n";
while($myrow = mysql_fetch_array ($result))
{
print "<row>\n";
print "<name>".$myrow["marka"]."</name>\n";
print "<category>".$myrow["model"]."</category>\n";
print "</row>\n";
}//endwhile
print "</dataset>\n";
в созданный файл?
Спустя 5 минут, 24 секунды (15.09.2011 - 19:27) segazav написал(а):
Простите, что то тупанул:
Все нормально, но "Стандарт XML не допускает появления символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением значений 9, 10, 13 — табуляция, перевод строки, возврат каретки) в текстовых полях. Также этот стандарт строго требует заменять в тексте все следующие символы."
// Откроем файл (если он есть) или создадим его
$fp = fopen ("yandex_auto.xml", "a+");
// Вывод будем осуществлять в файл (yandex_auto.xml)
fputs($fp,"<?xml version=\"1.0\" encoding=\"windows-1251\"?>\n");
fputs($fp,"<dataset>\n");
while($myrow = mysql_fetch_array ($result))
{
fputs($fp,"<row>\n");
fputs($fp,"<name>".$myrow["marka"]."</name>\n");
fputs($fp,"<category>".$myrow["model"]."</category>\n");
fputs($fp,"</row>\n");
}//endwhile
fputs($fp,"</dataset>\n");
fclose($fp);
Все нормально, но "Стандарт XML не допускает появления символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением значений 9, 10, 13 — табуляция, перевод строки, возврат каретки) в текстовых полях. Также этот стандарт строго требует заменять в тексте все следующие символы."
Спустя 1 минута, 52 секунды (15.09.2011 - 19:29) Invis1ble написал(а):
Цитата |
Все нормально, но "Стандарт XML не допускает появления символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением значений 9, 10, 13 — табуляция, перевод строки, возврат каретки) в текстовых полях. Также этот стандарт строго требует заменять в тексте все следующие символы." |
И ?
Спустя 1 час, 9 минут, 17 секунд (15.09.2011 - 20:39) caballero написал(а):
Цитата |
И ? |
что И?
перенос строки убери с XML
\n который
Спустя 4 минуты (15.09.2011 - 20:43) Invis1ble написал(а):
ты попутал наверное, вопрос "И ?" был к ТС
