Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: XML в PHP5 шаг за шагом...

Сообщения:  [1-10]   [11-11] 

 
 автор: coloboc66   (28.11.2007 в 15:11)   письмо автору
 
   для: Lelik   (27.11.2007 в 22:28)
 

Что-то у меня ваш пример с XSL не работает, может настраивать нужно... Потом начну разбираться.
Со своим примером разобрался относительно чтения:

echo '<table border=1px>';
$items=$doc->getElementsByTagName('news');
for ($i = 0; $i < $items->length; $i++) {
echo '<tr>';
    if($items->item($i)->hasAttributes())echo '<td>'.$items->item($i)->getAttribute('date').'</td>';
   echo '<td>'.$items->item($i)->nodeValue . "</td>";
echo '</tr>';
}
echo '</table>';

А вот как добавить к документу новый узел новостей? Пишу:

$news=$doc->createElement('news');
$news->setAttribute('date','28.11.2007');
$title=$doc->createElement('title');
$title->nodeValue='title4';//по-моему здесь что-то не так
$text=$doc->createElement('text');
$text->NodeValue='text4';//и здесь
$news->appendChild($title);
$news->appendChild($text);
$items=$doc->childNodes;
$items->item(0)->appendChild($news);

Но значения узлов не выводятся. Почему?

   
 
 автор: Lelik   (27.11.2007 в 22:28)   письмо автору
 
   для: coloboc66   (27.11.2007 в 21:10)
 

ничего особо сложного. основных сложностей две: практика; xPath; (это я по себе сужу). Но есть огромные преймущества: вынос html-разметки из php-кода (в нашем случае, а вообще из серверных сценариев), или другими словами данные, полученные с помощью серверных сценариев, можно получать в любом порядке, а в результате получаем то, что хотим (иначе приходится получать обязательно по порядку данные для шапки, контента, футера); иногда из-за разметки в php-коде, необходимо делать по нескольку запросов для вывода одних и тех же данных, в связке xml+xsl это обходится стороной; при редизайне надо править только файл xsl-разметки, что существенно облегчает саму процедуру редизайна.

ЗЫ. написал так написал: можно в микрософт какой-нибудь копирайтером идти :)

   
 
 автор: coloboc66   (27.11.2007 в 21:10)   письмо автору
 
   для: Lelik   (27.11.2007 в 18:02)
 

Хммм... Как заманчиво. Но xsl, я слыхал, очень сложен для усвоения?

   
 
 автор: Lelik   (27.11.2007 в 18:02)   письмо автору
 
   для: coloboc66   (27.11.2007 в 16:35)
 

лучше XSLT использовать.
при xmlе вида

<content>
    <news date="27.11.2007">
        <title>news</title>
        <text>text of news</text>
    </news>
</content>


xsl вида

<xsl:template match="/content">
    <table>
        <xsl:apply-templates />
    </table>
</xsl:template>

<xsl:template match="news">
    <tr>
        <td><xsl:value-of select="@date" /></td>
        <td><xsl:apply-templates select="title" /></td>
        <td><xsl:apply-templates select="text" /></td>
    </tr>
</xsl:template>


на выходе получим

<table>
    <tr>
        <td>27.11.2007</td>
        <td>news</td>
        <td>text of news</td>
    </tr>
</table>

   
 
 автор: coloboc66   (27.11.2007 в 16:35)   письмо автору
 
   для: mihdan   (27.11.2007 в 15:35)
 

Ну хорошо: вот, наверное, я правильно написал первые строчки

<?php
$doc 
= new DOMDocument();//создаём экземпляр ДОМ-документа
$doc->load('news.xml');//загружаем в него XML-файл
?>

А вот как дальше? Можно было бы просто разбирать без модели DOM, но это наверное неправильно. Например, я хочу, чтобы каждый из узлов news ложился в строку таблицы, где в 1-ой ячейке был бы атрибут тега news date, во второй - значение узла title, в третьей - значение узла text.
А как? АААааааааа?????

   
 
 автор: mihdan   (27.11.2007 в 15:35)   письмо автору
 
   для: coloboc66   (27.11.2007 в 15:02)
 

при модуле - работает быстрее и безопаснее, можно юзать basic-авторизацию и фунции апача типа сбора заголовков

   
 
 автор: coloboc66   (27.11.2007 в 15:02)   письмо автору
 
   для: Axxil   (27.11.2007 в 14:31)
 

Да - в Денвере. Установил Base_PHP5 и расширения РНР. Тут я немного недопонимаю: у меня получилось так: если я присваиваю файлу расширение *.php, то автоматически запускается версия 4 интерпретатора РНР. А если присваиваю расширение *.php5, то автоматически запускается версия 5 интерпретатора и вышеуказанная мной строчка работает без ошибок. Непонятно, почему при установке РНР5 остался РНР4? На сайте Денвера написано, что РНР5 работает не как модуль апача, а как CGI - здесь я тоже не очень понимаю принципиальную разницу между двумя этими понятиями и чем это грозит?

   
 
 автор: Axxil   (27.11.2007 в 14:31)   письмо автору
 
   для: coloboc66   (27.11.2007 в 12:15)
 

в денвере дело происходит я так понимаю?
Надо установить расширение php_domxml.dll для вашей версии php

UPD. Если версия 5 то подключать не надо, надо наоборот выключить
Закоментируйте в php.ini строчку
extension=php_domxml.dll

если она там есть

   
 
 автор: coloboc66   (27.11.2007 в 14:30)   письмо автору
 
   для: Саня   (27.11.2007 в 14:26)
 

Так установил всё - не помогает.

   
 
 автор: Саня   (27.11.2007 в 14:26)   письмо автору
 
   для: coloboc66   (27.11.2007 в 12:15)
 

Установите PHP 5 и будет всё работать.

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования