|
|
|
| Подскажите где можно почитать инфу с примерами парсера по разбору XML и RSS файлов туда и обратно? Необходимо для работы с товарами и новостями с е-магазинами.
Спасибо. | |
|
|
|
|
|
|
|
для: AN
(23.07.2008 в 12:49)
| | посоветуйте какой парсер? где почитать чтобы заново не изобретать велосипед? | |
|
|
|
|
|
|
|
для: AN
(24.07.2008 в 03:39)
| | >посоветуйте какой парсер? где почитать чтобы заново не изобретать велосипед?
на форуме есть поиск
один
два | |
|
|
|
|
|
|
|
для: mihdan
(24.07.2008 в 11:10)
| | смотрел смотрел, все как то раздроблено, а где бы посмотреть толковый скрипт? | |
|
|
|
|
|
|
|
для: AN
(18.10.2008 в 19:50)
| | Да нигде - их здесь просто нет. И вообще нигде нет. Беритесь сами за документацию и пишите. | |
|
|
|
|
|
|
|
для: coloboc66
(19.10.2008 в 00:23)
| | Мой чем не устраивает? | |
|
|
|
|
|
|
|
для: Trianon
(19.10.2008 в 13:52)
| | Ммм... А где он? | |
|
|
|
|
|
|
|
|
для: Trianon
(20.10.2008 в 21:11)
| | Мда... Это я отвечал на сообщение, а в голове у меня был не парсер, а PHP DOM. Если под парсером понимать вывод содержимого XML на страницу, то это не особо сложная задача. А вот что действительно интересует, так это редактирование XML с помощью PHP DOM. | |
|
|
|
|
|
|
|
для: coloboc66
(21.10.2008 в 09:22)
| | кстати из всех расширений это DOM наиболее толковое ,
у него есть практически все для работы
правда такая запись нужна для создания элемента,
что не радует
$channel_parent = $dom->appendChild($dom->createElement("channel"));
|
| |
|
|
|
|
|
|
|
для: Расшифровка
(21.10.2008 в 10:06)
| | Ну а дольше как? Как в этот узел записать атрибуты и содержимое? | |
|
|
|
|
|
|
|
для: coloboc66
(21.10.2008 в 10:35)
| |
//создаем xml, в нужной кодировке
$dom = new DOMDocument('1.0', 'UTF-8');
//добавляем родительский элемент, корень
$channel_parent = $dom->appendChild($dom->createElement("channel"));
//добавляем дочерний узел, внуть channel
$newitem = $channel_parent->appendChild($dom->createElement("item"));
//добавляем 1 элемент внутрь item, с текстом
$element = $dom->createElement("item_any_element" , "текст который будет содержать");
$newitem->appendChild($element);
//добавляем 2ой элемент внутрь item , с текстом
$element = $dom->createElement("item_any_element2" , "еще текст который будет содержать");
$newitem->appendChild($element);
echo $dom->saveXML() . "\n";
|
образец
http://news.google.com/news?rls=en&q=php&sourceid=opera&ie=UTF-8&oe=utf-8&um=1&tab=wn&nolr=1&output=rss
п.с. а как можно красиво код оформить? чернобелое плохо читать | |
|
|
|
|
|
|
|
для: Расшифровка
(21.10.2008 в 17:48)
| | А расширения какие-то должны быть на сервере установлены? | |
|
|
|
|
|
|
|
для: coloboc66
(21.10.2008 в 20:23)
| | coloboc66, хорош прикалываться)),
There is no installation needed to use these functions; they are part of the PHP core.
|
http://us.php.net/manual/en/dom.installation.php
из всех расширений по работе с xml, dom наиболее удобное,
на simlexml забил, тупит с кодировками, | |
|
|
|
|
|
|
|
для: Расшифровка
(21.10.2008 в 17:48)
| | А значения атрибутов узлов как устанавливать? В этом примере, если я правильно понял, атрибуты не устанавливаются. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: AN
(23.07.2008 в 12:49)
| | тенденции и обзор проблемы,
http://phpclub.ru/faq/PHP5/XML
+php.net
да и не забудьте выбросить свалку истории кодировку win1251,
это уже рудимент,
utf-8 рулит, | |
|
|
|
|
|
|
|
для: Расшифровка
(21.10.2008 в 01:00)
| | Развыбрасывался... В мире не только апач с пхп существуют... | |
|
|
|
|
|
|
|
для: GeorgeIV
(22.10.2008 в 10:04)
| | Да правильно - выбросить надо. Я раньше всё делал в вин1251, а потом на сайте понадобились другие языки и возникла проблема - нужно теперь всё переделывать. Если бы изначально всё делал в УТФ-8, этой проблемы бы не возникло... | |
|
|
|
|
|
|
|
для: GeorgeIV
(22.10.2008 в 10:04)
| | ну эт в разрезе php форума)) | |
|
|
|
|
|
|
|
для: Расшифровка
(22.10.2008 в 13:04)
| | Фиг его знает - я даже не могу файл прочитать, у меня выдаётся ошибка с первой же строки кода:
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 | |
|
|
|
|
|
|
|
для: coloboc66
(22.10.2008 в 15:26)
| | а так
$doc = new DOMDocument();
$doc->load('file.xml');
echo $doc->saveXML();
|
| |
|
|
|
|
|
|
|
для: Расшифровка
(22.10.2008 в 15:43)
| | Так получается, но вопрос вот в чём: аши примеры выше по добавлению узла касаются добавления в НОВЫЙ документ? Интересует как-раз добавление узла в уже существующий документ, то есть его (документа) редактирование. | |
|
|
|
|
|
|
|
для: Расшифровка
(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>
|
| |
|
|
|
|
|
|
|
для: Расшифровка
(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)
| | Не пойму, как получить нумерованный доступ к узлам в списке:
$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');
}
|
Но мне нужен именно нумерованный вывод. | |
|
|
|