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

Форум PHP

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

 

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

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

тема: Как разобрать XML или RSS файл в базу?

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

 
 автор: coloboc66   (27.10.2008 в 10:45)   письмо автору
 
   для: Расшифровка   (23.10.2008 в 01:40)
 

Не пойму, как получить нумерованный доступ к узлам в списке:
$doc = new DOMDocument();
$doc->load('file.xml');
$dataset = $doc->getElementsByTagName( "msg" );
$count_msgs=$dataset->length;

Вот это не работает:
for ($i =$first_msg; $i>=$last_msg; $i--)
{
echo '<hr/>';
echo $dataset[$i]->getAttribute('author');
}

Хотя так работает:
foreach( $dataset as $row ) 

echo $row->getAttribute('author');
}

Но мне нужен именно нумерованный вывод.

   
 
 автор: AN   (23.10.2008 в 21:35)   письмо автору
 
   для: Расшифровка   (23.10.2008 в 01:40)
 

ну вот есть живой пример:

<price date="2008-04-27 15:15">
<name>Site</name> 
<region>Украина</region> 
<url>http://site.com</url> 
<currency code="USD" rate="5.1" main="1" /> 

<catalog>
<category id="13">Камеры</category> 
<category id="14">Компьютеры</category> 
<category id="12">Tel-TV-DVD</category> 
<category id="4">Аудио</category> 
...
</catalog>

<items>
<item id="4918">
<name>SENNHEISER HD 515 Gaming</name> 
<url>http://site.com/audio/headphones/sennheiser/sennheiser_hd_515_gaming</url> 
<price>133.00</price> 
<categoryId>34</categoryId> 
<image>http://site.com/files/15/HD_515_m.jpg</image> 
</item>

<item id="4917">
<name>SENNHEISER HD 25-1 II</name> 
<url>http://site.com/audio/headphones/sennheiser/sennheiser_25-1_ii</url> 
<price>355.00</price> 
<categoryId>34</categoryId> 
<image>http://site.com/files/15/HD-25-1 II.jpg</image> 
</item>


вот я и думаю как грамотнее сделать...
при чем на лету нужно менять ID категории этого файла на ID категории в БД, ну и закидывать в базу ...

скажите, чето подобное толковое никто не встречал?

   
 
 автор: Расшифровка   (23.10.2008 в 01:40)   письмо автору
 
   для: Расшифровка   (22.10.2008 в 15:43)
 

без проблем редактируется все что угодно,

вместо
$dom = new DomDocument('1.0','iso-8859-15');
пишется $dom = new DomDocument();


еще методика
$dom = new DomDocument('1.0','iso-8859-15');

$ht_ml = $dom->appendChild($dom->createElement('html'));

$he_ad = $ht_ml->appendChild($dom->createElement('head'));

$tit_le= $he_ad->appendChild($dom->createElement('title'));
$tit_le->appendChild($dom->createTextNode('DOMAttr test'));

$me_ta = $he_ad->appendChild(new DOMElement('meta'));
$me_ta->setAttributeNode(new DOMAttr('name', 'Description'));
$me_ta->setAttributeNode(new DOMAttr('content', 'example'));

$me_ta = $he_ad->appendChild(new DOMElement('meta'));
$me_ta->setAttributeNode(new DOMAttr('name', 'Author'));
$me_ta->setAttributeNode(new DOMAttr('content', 'karvjorm'));

Result:

<?xml version="1.0" encoding="iso-8859-15"?>
<html>
  <head>
    <title>DOMAttr test</title>
    <meta name="Description" content="example"/>
    <meta name="Author" content="karvjorm"/>
  </head>

   
 
 автор: coloboc66   (22.10.2008 в 17:29)   письмо автору
 
   для: Расшифровка   (22.10.2008 в 15:43)
 

Так получается, но вопрос вот в чём: аши примеры выше по добавлению узла касаются добавления в НОВЫЙ документ? Интересует как-раз добавление узла в уже существующий документ, то есть его (документа) редактирование.

   
 
 автор: Расшифровка   (22.10.2008 в 15:43)   письмо автору
 
   для: coloboc66   (22.10.2008 в 15:26)
 

а так

$doc = new DOMDocument();
$doc->load('file.xml');
echo $doc->saveXML();

   
 
 автор: coloboc66   (22.10.2008 в 15:26)   письмо автору
 
   для: Расшифровка   (22.10.2008 в 13:04)
 

Фиг его знает - я даже не могу файл прочитать, у меня выдаётся ошибка с первой же строки кода:
$dom->load('file.xml');

Notice: Undefined variable: dom in z:\home\localhost\www\testdir\xml\dom_readxml.php5 on line 3

Fatal error: Call to a member function load() on a non-object in z:\home\localhost\www\testdir\xml\dom_readxml.php5 on line 3

   
 
 автор: Расшифровка   (22.10.2008 в 13:04)   письмо автору
 
   для: GeorgeIV   (22.10.2008 в 10:04)
 

ну эт в разрезе php форума))

   
 
 автор: Расшифровка   (22.10.2008 в 12:59)   письмо автору
 
   для: coloboc66   (22.10.2008 в 09:40)
 

ну я в кратце

можно и атрибуты

$doc = new DOMDocument("1.0");
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);
$newnode->setAttribute("align", "left");



а вообще мануал и примеры есть, там не плохо расписано

http://us.php.net/manual/en/book.dom.php

   
 
 автор: coloboc66   (22.10.2008 в 10:28)   письмо автору
 
   для: GeorgeIV   (22.10.2008 в 10:04)
 

Да правильно - выбросить надо. Я раньше всё делал в вин1251, а потом на сайте понадобились другие языки и возникла проблема - нужно теперь всё переделывать. Если бы изначально всё делал в УТФ-8, этой проблемы бы не возникло...

   
 
 автор: GeorgeIV   (22.10.2008 в 10:04)   письмо автору
 
   для: Расшифровка   (21.10.2008 в 01:00)
 

Развыбрасывался... В мире не только апач с пхп существуют...

   

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

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

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