|
|
|
|
$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'); // сохраняем файл
|
Создаёт пустой документ yandex.xml и выдает ошибку: "DOMDocument::save() [function.DOMDocument-save]: output conversion failed due to conv error, bytes 0xDF 0xE1 0xEB 0xEE ..."
$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"?>
Как применить кодировку Windows-1251??? | |
|
|
|
|
|
|
|
для: sega_z
(14.09.2011 в 22:19)
| | Ребята, кто нибудь подскажет как поменять кодировку??? | |
|
|
|
|
|
|
|
для: sega_z
(15.09.2011 в 17:43)
| | Все говорят, что XML работает только в UTF-8, но почему тогда Яндекс Авто требует, чтобы в заголовке XML файла было <?xml version="1.0" encoding="windows-1251"?>
Вот смотрите сами: http://help.yandex.ru/webmaster/?id=1114016 | |
|
|
|
|
|
|
|
для: sega_z
(15.09.2011 в 18:59)
| | А у них не XML, а свой собственный формат YML (могу ошибаться, но помоему он нарушает XML-требования по парочке позиций). Вообще, конечно, XML поддерживает Windows-1251, однако эту кодировку поддерживает далеко не каждая библиотека, оперирующая XML. | |
|
|
|
|
|
|
|
для: cheops
(15.09.2011 в 19:48)
| | Понятно, спасибо!
Я создал таким образом:
$result = mysql_query ("SELECT * FROM doska WHERE podrazd='Легковые автомобили' ORDER BY id DESC",$db);
$myrow = mysql_fetch_array ($result);
// Откроем файл (если он есть) или создадим его
$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,"<marka>".$myrow["marka"]."</marka>\n");
fputs($fp,"<model>".$myrow["model"]."</model>\n");
fputs($fp,"</row>\n");
}//endwhile
fputs($fp,"</dataset>\n");
fclose($fp);
|
Но опять же как быть с этим: "Стандарт XML не допускает появления символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением значений 9, 10, 13 — табуляция, перевод строки, возврат каретки) в текстовых полях. Также этот стандарт строго требует заменять в тексте все следующие символы." | |
|
|
|
|
|
|
|
для: sega_z
(15.09.2011 в 20:40)
| | XML более сложен, чем кажется на первый взгляд, он все позволяет, в том числе хранить тэги, скрипты, бинарные данные, для этого их нужно помещать в конструкцию вида
| |
|
|
|
|
|
|
|
для: cheops
(15.09.2011 в 21:06)
| | А как получить это: " & > < ' в последнем коде создания XML файла? | |
|
|
|
|
|
|
|
для: sega_z
(15.09.2011 в 21:36)
| | Не очень понятно, откуда получить? Или имеется в виду преобразовать ", &? < и > в специальные последовательности? | |
|
|
|
|
|
|
|
для: cheops
(15.09.2011 в 21:44)
| | Да, если встретятся в тексте | |
|
|
|
|
|
|
|
для: sega_z
(15.09.2011 в 22:13)
| | Можно воспользоваться функцией htmlentities() или явно их заменить при помощи str_replace(). | |
|
|
|