[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ПАРСИНГ с помощью дом
vilins
Всем здрасть, снова проблема с парсингом xml. прочитал много мануалов и чет они мне не помогли(
проблема такая вот файл http://www.timezero.ru/res.xml

Пример данных в файле по одному магазину:

<S time="1122456484" shop="New Moscow Shop" xy="0/-1" city="New Moscow" >
<R name="Metals" cost="0.5" need="1646" />
<R name="Gold" cost="1" need="20641" />
<R name="Polymers" cost="4" need="14362" />
<R name="Organic" cost="1.2" need="17988" />
<R name="Silicon" cost="0.1" need="81165" />
<R name="Radioactive" cost="1.5" need="17572" />
<R name="Gems" cost="0.4" need="22663" />
<R name="Venom" cost="1" need="10294" />
</S>

значение полей тэга S:
time - время последнего обновления в секундах с начала эпохи.
shop - название(вывеска) магазина.
city - город в котором расположено здание магазина.
xy - координаты локации в которой расположено здание магазина.

значение полей тэга R:
name - название ресурса.
cost - закупочная стоимость ресурса.
need - квота на закупку ресурса.


вот мое творение


<?php
$xml = file_get_contents('http://www.timezero.ru/res.xml');
$xml = '<?xml version="1.0" encoding="windows-1251"?>'.$xml; //добавляем, т.к. timezero не дает нам эту строчку
$xmldoc = new DOMDocument();
$xmldoc->loadXML($xml);
$usercol = $xmldoc->getElementsByTagName('S'); // тут либо USER, либо O [не ноль, а второй тег smile.gif]
$attr_to_show = 'shop'; // для примера указал один из аттрибутов, который надо получить
echo $attr_to_show.' : ';
echo $usercol->attributes->getNamedItem('shop')->nodeValue;
?>




Спустя 2 часа, 51 минута, 9 секунд (8.10.2008 - 15:03) n1tr0k1ll3r написал(а):
А ты на том же хостинге? Мне кажется, что там уже не работает открытие удаленных(remote) файлов

Спустя 1 день, 4 часа, 34 минуты, 21 секунда (9.10.2008 - 19:38) vilini написал(а):
Цитата(n1tr0k1ll3r @ 8.10.2008, 12:03) [snapback]50707[/snapback]
А ты на том же хостинге? Мне кажется, что там уже не работает открытие удаленных(remote) файлов

Привет. Спасиб что откликнулся, да на томже но купил всетаки эти опции на хостинге первый скрипт работает норм я его доделал, а вот тут что то проблемно...

Спустя 14 часов, 58 минут, 39 секунд (10.10.2008 - 10:36) amadeus написал(а):
1. Ошибка в формате xml файла.
Вместо
$xml = '<?xml version="1.0" encoding="windows-1251"?>'.$xml;
Надо бы сделать так
$xml = '<?xml version="1.0" encoding="windows-1251"?><all>'.$xml.'</all>;
2. Ваша собственная ошибка
$usercol = $xmldoc->getElementsByTagName('S');
здесь $usercol объект класса DOMNodeList
а здесь
$usercol->attributes->getNamedItem('shop')->nodeValue;
Вы обращаетесь с ним как с объектом класса DOMNode
Вобщем, что-то вроде этого
Код
<?php
$xml = file_get_contents('http://www.timezero.ru/res.xml');
$xml = '<?xml version="1.0" encoding="windows-1251"?><all>'.$xml.'</all>';
$xmldoc = new DOMDocument();
$xmldoc->loadXML($xml);
$usercols = $xmldoc->getElementsByTagName('S');
$attr_to_show = 'shop';
foreach($usercols as $usercol){
   echo $attr_to_show.' : ';
   echo $usercol->attributes->getNamedItem('shop')->nodeValue.'<br>';
}
?>

будет работать

Спустя 4 часа, 8 минут, 56 секунд (10.10.2008 - 14:45) vilins написал(а):
Большое спасибо, заработало.
Если есть у кого нибуть хорошие мануал по дом дайте плиз vilin@yandex.ru или просто линк

Спустя 1 день, 5 часов, 5 минут, 34 секунды (11.10.2008 - 19:51) vilini написал(а):
А как считывать что ьы вот такая иерархия была?


<S time="1122456484" shop="New Moscow Shop" xy="0/-1" city="New Moscow" >
<R name="Metals" cost="0.5" need="1646" />
<R name="Gold" cost="1" need="20641" />
<R name="Polymers" cost="4" need="14362" />
<R name="Organic" cost="1.2" need="17988" />
<R name="Silicon" cost="0.1" need="81165" />
<R name="Radioactive" cost="1.5" need="17572" />
<R name="Gems" cost="0.4" need="22663" />
<R name="Venom" cost="1" need="10294" />
</S>

Спустя 1 день, 2 часа, 22 минуты, 3 секунды (12.10.2008 - 22:13) amadeus написал(а):
Как, считав из корня все теги с именем S, потом в каждом из них считать все теги с именем R?
Если Вас этот вопрос мучает, то без комментариев... А если я неправильно понял, то поясните подробнее.

Спустя 1 день, 8 часов, 7 минут, 6 секунд (14.10.2008 - 06:20) vilins написал(а):
Цитата(amadeus @ 12.10.2008, 19:13) [snapback]51313[/snapback]
Как, считав из корня все теги с именем S, потом в каждом из них считать все теги с именем R?
Если Вас этот вопрос мучает, то без комментариев... А если я неправильно понял, то поясните подробнее.


попытаюсь пояснить.
Вообщем в теге S все магазины, тег R ресурс и цены на него.
Внимание вопрос....)
Как сделать чтобы, каждому тегу S(тобиж магазину) соответствовал его цены на ресурс тег R.

Спустя 2 часа, 14 минут, 7 секунд (14.10.2008 - 08:34) amadeus написал(а):
Как, считав из корня все теги с именем S, потом в каждом из них считать все теги с именем R?
Код
$xml = file_get_contents('http://www.timezero.ru/res.xml');
$xml = '<?xml version="1.0" encoding="windows-1251"?><all>'.$xml.'</all>';
$xmldoc = new DOMDocument();
$xmldoc->loadXML($xml);
$usercols = $xmldoc->getElementsByTagName('S');
foreach($usercols as $usercol){
   echo 'МагаЗЫН : '.$usercol->attributes->getNamedItem('shop')->nodeValue.' ('.
        'время обновления: '.date('d.m.Y h:i:s',$usercol->attributes->getNamedItem('time')->nodeValue).'; '.
        'какой-то xy: '.$usercol->attributes->getNamedItem('xy')->nodeValue.'; '.
        'город: '.$usercol->attributes->getNamedItem('city')->nodeValue.') <br/>Товары: <br/>';
   $items = $usercol->getElementsByTagName('R');
   foreach($items as $item){
       echo 'Наименование: '.$item->attributes->getNamedItem('name')->nodeValue.';  ';
       echo 'Цена: '.$item->attributes->getNamedItem('cost')->nodeValue.';  ';
       echo 'Потребность: '.$item->attributes->getNamedItem('need')->nodeValue.'.<br/>';
   }
   echo '<br/><br/><br/>';
}

Ничего нового.

Спустя 2 часа, 17 минут, 42 секунды (14.10.2008 - 10:52) vilins написал(а):
Цитата(amadeus @ 14.10.2008, 5:34) [snapback]51467[/snapback]
Как, считав из корня все теги с именем S, потом в каждом из них считать все теги с именем R?
Код
$xml = file_get_contents('http://www.timezero.ru/res.xml');
$xml = '<?xml version="1.0" encoding="windows-1251"?><all>'.$xml.'</all>';
$xmldoc = new DOMDocument();
$xmldoc->loadXML($xml);
$usercols = $xmldoc->getElementsByTagName('S');
foreach($usercols as $usercol){
   echo 'МагаЗЫН : '.$usercol->attributes->getNamedItem('shop')->nodeValue.' ('.
        'время обновления: '.date('d.m.Y h:i:s',$usercol->attributes->getNamedItem('time')->nodeValue).'; '.
        'какой-то xy: '.$usercol->attributes->getNamedItem('xy')->nodeValue.'; '.
        'город: '.$usercol->attributes->getNamedItem('city')->nodeValue.') <br/>Товары: <br/>';
   $items = $usercol->getElementsByTagName('R');
   foreach($items as $item){
       echo 'Наименование: '.$item->attributes->getNamedItem('name')->nodeValue.';  ';
       echo 'Цена: '.$item->attributes->getNamedItem('cost')->nodeValue.';  ';
       echo 'Потребность: '.$item->attributes->getNamedItem('need')->nodeValue.'.<br/>';
   }
   echo '<br/><br/><br/>';
}

Ничего нового.

Дружище ты не поверишь делал почти таг же не работало, а с твои кодом заработало. большое спасибо

Спустя 8 минут, 18 секунд (14.10.2008 - 11:00) vilins написал(а):
все понял ошибку

Спустя 2 часа, 41 минута, 12 секунд (14.10.2008 - 13:41) vilins написал(а):
а как обратиться к конкретной записи? например к конкретному магазину.
Если есть какие то мануалы плиз дай линки или на почту vilin@yandex.ru что бы я народ не муча.


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.