Форумы портала PHP.SU » » Вопросы новичков » DocumentType как вставить с помощью PHP

Страниц (1): [1]
 

1. Kubert - 12 Июля, 2011 - 15:34:02 - перейти к сообщению
Как вставить DocumentType в XML файл с помощью PHP???
2. grefon - 12 Июля, 2011 - 15:37:30 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.    header('Content-Type: text/xml; charset=utf-8');
  3. ?>
  4. <?xml version="1.0" encoding="utf-8"?>
3. Kubert - 12 Июля, 2011 - 15:40:41 - перейти к сообщению
grefon пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.    header('Content-Type: text/xml; charset=utf-8');
  3. ?>
  4. <?xml version="1.0" encoding="utf-8"?>


Немного не то.
У меня есть два файла. Первый PHP файл генерит второй XML файл.
Как записать именно в XML строчку такую:
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">

У меня получается ее записать только в таком виде:
&lt;!DOCTYPE yml_catalog SYSTEM "shops.dtd" &gt;
4. grefon - 12 Июля, 2011 - 15:47:42 - перейти к сообщению
Честно говоря ничего не понял, что Вы хотите и в чем проблема.

PHP:
скопировать код в буфер обмена
  1. $str = '<!DOCTYPE yml_catalog SYSTEM "shops.dtd">';
  2. file_put_contents('file.xml',$str);
  3.  
5. Kubert - 12 Июля, 2011 - 15:54:12 - перейти к сообщению
<?php
$doc = new DOMDocument('1.0');
$doc -> encoding = 'windows-1251';
$doc -> formatOutput = true ;

$yml_catalog = $doc -> createElement('yml_catalog');
$yml_catalog = $doc -> appendChild($yml_catalog);
.......
.......
.......

$doc->save("yandex_market.xml");
?>

вот. И мне нужно в этот файл yandex_market.xml вставить строку <!DOCTYPE yml_catalog SYSTEM "shops.dtd">
(Добавление)
НУ пАмагите!!!!
6. Мелкий - 12 Июля, 2011 - 17:03:55 - перейти к сообщению
0) file_get_contents
1) http://php.su/functions/?page=cat_string
2) file_put_contents

XML не бинарник, его не обязательно редактировать только классами, обрабатывающими XML. Хотя и бинарник можно редактировать всё теми же функциями.
7. grefon - 12 Июля, 2011 - 17:10:11 - перейти к сообщению
Сколько не сталкивался с DOMDocument, всегда натыкался на какие-нибудь баги, по этому всегда пользуюсь стандартными функциями.
8. Kubert - 12 Июля, 2011 - 17:49:11 - перейти к сообщению
Как же поступить? Не могу в интернете найти решения...
Написал уже в Яндекс, так там девушки которые ничего не знают...
Может есть альтернатива?
9. grefon - 12 Июля, 2011 - 17:54:09 - перейти к сообщению
Так Вам же уже и я и Мелкий сказали альтернативу. Пользуйтесь стандартными функциями обработки строки.
10. Kubert - 12 Июля, 2011 - 18:05:48 - перейти к сообщению
grefon пишет:
Так Вам же уже и я и Мелкий сказали альтернативу. Пользуйтесь стандартными функциями обработки строки.


Я воспользовался. Все равно конвертирует при выводе "<" и ">" в "&lt;" и "&gt;"

http://www[dot]7-tur[dot]com/yandex_market[dot]xml
11. grefon - 12 Июля, 2011 - 19:05:00 - перейти к сообщению
Kubert, Вы супер! Радость

У вас браузер ошибку выдает, а Вы увидели при ошибке "неправильное" отображение скобок и целую тему развернули. Сделайте нормальный xml и все у Вас будет работать. А "<" и ">" отображаются нормально, просто Вам они в отчете об ошибке предоставляются в виде "&lt;" и "&gt;". Просмотрите исходный код.
12. Kubert - 13 Июля, 2011 - 09:47:15 - перейти к сообщению
grefon пишет:
Kubert, Вы супер! Радость

У вас браузер ошибку выдает, а Вы увидели при ошибке "неправильное" отображение скобок и целую тему развернули. Сделайте нормальный xml и все у Вас будет работать. А "<" и ">" отображаются нормально, просто Вам они в отчете об ошибке предоставляются в виде "&lt;" и "&gt;". Просмотрите исходный код.


И в исходном коде было тоже самое, я естественно открывал и смотрел исходный код. Но! Проблема решена! И для тех кто столкнется с подобной проблемой выкладываю решение. Спасибо Google... Верней otvety.google

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $implementation = new DOMImplementation();
  3. $dtd = $implementation->createDocumentType('yml_catalog', null, 'shops.dtd');
  4. $doc = $implementation->createDocument('', '', $dtd);
  5. $doc -> encoding = 'windows-1251';
  6. $doc -> formatOutput = true ;
  7.  
  8. $books = $doc -> createElement('books');
  9. $books = $doc -> appendChild($books);
  10. $book = $doc -> createElement('book');
  11. $book = $books -> appendChild($book);
  12. $name = $doc -> createTextNode('name book');
  13. $name = $book -> appendChild($name);
  14.  
  15. echo $doc->save("file.xml");
  16. $doc->xmlVersion="1.0";
  17.  

 

Powered by ExBB FM 1.0 RC1