Парсер xml'ки - Страница 2 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming > PHP

PHP Форум как для начинающих программистов на PHP так и для профессионалов этого дела. Если нужно создать скрипт, функцию и т.д, но не знаете как, спросите у нас и мы вам подскажем. Здесь вы найдете примеры скриптов которые вы сможете использовать на сайтах своих серверов (онлайн, регистрация, семь печатей, топ игроков). Так же много книг и статей.

Ответ
Опции темы
Непрочитано 04.05.2012, 15:46   #11
Герой

Автор темы (Топик Стартер) Re: Парсер xml'ки

Itemname-ru, Itemname-e
Shayne вне форума Отправить сообщение для Shayne с помощью Skype™ Ответить с цитированием
Непрочитано 04.05.2012, 15:49   #12
Аватар для VISTALL
Illussion is real

По умолчанию Re: Парсер xml'ки

минуточку
__________________
consulo.io - Consulo - multi-language IDE
VISTALL на форуме Ответить с цитированием
Непрочитано 04.05.2012, 15:54   #13
Аватар для VISTALL
Illussion is real

По умолчанию Re: Парсер xml'ки

в аттаче) ток там .rar Архив, если не откроется, переименуйте
Вложения
Тип файла: zip items.zip (802.3 Кб, 14 просмотров)
__________________
consulo.io - Consulo - multi-language IDE
VISTALL на форуме Ответить с цитированием
Сказали спасибо:
Непрочитано 04.05.2012, 15:55   #14
Герой

Автор темы (Топик Стартер) Re: Парсер xml'ки

Благодарствую

Добавлено через 1 час 17 минут
PHP код:
<?php
set_time_limit
(900);
$xml simplexml_load_file('1c.xml');
$xml2 simplexml_load_file('ItemName-e.xml');

foreach(
$xml->npc as $npcElement

    
$npcId = (string)$npcElement["id"]; 
    foreach(
$npcElement->rewardlist as $rewardListElement
    { 
        foreach(
$rewardListElement->group as $groupElement
            {
                
$gChance = (string)$groupElement["chance"]; 
                foreach(
$groupElement->reward as $rewardElement
                { 
                    
$rewardID = (string)$rewardElement["item_id"];
                    foreach(
$xml2->data as $data)
                    {
                            foreach(
$data->item as $itemm)
                            {
                                foreach(
$data->name as $namee
                                {
                                if (
$itemm["id"]==$rewardID)
                                    
$item=$namee ["value"];
                                }
                            }
                    }
                    
$rewardMIN = (string)$rewardElement["min"]; 
                    
$rewardMAX = (string)$rewardElement["max"]; 
                    
$rewardCHANCE = (string)$rewardElement["chance"]; 
                    
$endCHANCE=0.9999;
                    
$endCHANCE$gChance/100*$rewardCHANCE;
                    
printf("%d&nbsp&nbsp&nbsp&nbsp&nbsp%s&nbsp&nbsp&nbsp&nbsp&nbsp%d-%d&nbsp&nbsp&nbsp&nbsp&nbsp[%6.4f xx]</br>",$npcId$item$rewardMIN$rewardMAX,$endCHANCE);
                } 
            } 
    } 

?>
307 строк выдает за 240 сек. это Т_Т

Последний раз редактировалось Shayne; 07.05.2012 в 00:39. Причина: Добавлено сообщение
Shayne вне форума Отправить сообщение для Shayne с помощью Skype™ Ответить с цитированием
Непрочитано 05.05.2012, 09:08   #15
Пользователь

По умолчанию Re: Парсер xml'ки

не стоит каждый раз бегать по контейнеру с именами чтобы идентифицировать объект, достаточно сложить все при загрузке в массив (как я говорил ранее) и дергать данные из него.

P.S. не забываем unset'ы после циклов
__________________
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Aquanox вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 05.05.2012, 13:17   #16
Аватар для rage
Герой

По умолчанию Re: Парсер xml'ки

эхх поколение пехепистов
 
 
#!/usr/bin/perl
use strict;
 
my($npcId, $gchance);
open(FH,"<npc.xml") or die "$!\n";
while(<FH>)
{
  my $str = $_;
  if($str =~/npc id="(\d+)"/)
  {
    $npcId = $1;
  }
  elsif($str =~/group chance="(.+?)"/)
  {
    $gchance = $1;
  }
  elsif($str =~/\<reward\s+item_id="(\d+)" min="(\d+)" max="(\d+)" chance="(.+?)".+?\<\!--(.+?)--\>/)
  {
    print "$npcId\t$5 $2-$3 [$gchance * 100 / $4]\n";
  }
}
close(FH);
 
Code: Perl
И работать будет явно побыстрее...
rage вне форума Ответить с цитированием
Непрочитано 05.05.2012, 16:33   #17
Пользователь

По умолчанию Re: Парсер xml'ки

Цитата:
Сообщение от rage Посмотреть сообщение
эхх поколение пехепистов
у меня ещё в PATH кроме php python стоит, так что временами скрипты мелкие и на нем выполняю =)
__________________
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Aquanox вне форума Ответить с цитированием
Непрочитано 05.05.2012, 17:11   #18
Герой

Автор темы (Топик Стартер) Re: Парсер xml'ки

Цитата:
Сообщение от rage Посмотреть сообщение
эхх поколение пехепистов
 
 
Code: Perl
И работать будет явно побыстрее...
С пхп хоть немного сталкивался, да и он ближе к си, который я учил не много...
Shayne вне форума Отправить сообщение для Shayne с помощью Skype™ Ответить с цитированием
Непрочитано 05.05.2012, 17:41   #19
Аватар для Yorie

По умолчанию Re: Парсер xml'ки

Цитата:
Сообщение от rage Посмотреть сообщение
эхх поколение пехепистов
 
 
#!/usr/bin/perl
use strict;
 
my($npcId, $gchance);
open(FH,"<npc.xml") or die "$!\n";
while(<FH>)
{
  my $str = $_;
  if($str =~/npc id="(\d+)"/)
  {
    $npcId = $1;
  }
  elsif($str =~/group chance="(.+?)"/)
  {
    $gchance = $1;
  }
  elsif($str =~/\<reward\s+item_id="(\d+)" min="(\d+)" max="(\d+)" chance="(.+?)".+?\<\!--(.+?)--\>/)
  {
    print "$npcId\t$5 $2-$3 [$gchance * 100 / $4]\n";
  }
}
close(FH);
 
Code: Perl
И работать будет явно побыстрее...
 
$data = explode("\n", file_get_contents('npc.xml'));
foreach ($data as $row)
{
    if (preg_match('/npc id\="(\d+)"/', $row, $match))
        $npcId = (int)$match[1];
    else if (preg_match('/group chance="(.+?)"/', $row, $match))
        $groupChance = $match[1];
    else if (preg_match('/\<reward\s+item_id="(\d+)" min="(\d+)" max="(\d+)" chance="(.+?)".+?\<\!--(.+?)--\>/', $row, $match))
        echo $npcId . "\t" . $match[1] . "\t" . $match[2] . '-' . $match[3] . "\t" . $match[4] . "\t" . $match[5] . "\n";
}
 
Code: PHP
Работать будет никак не медленнее Perl'а. Это не поколение пехепистов, а тех, кто не умеет быстро решать поставленные задачи
__________________
// aka Deft
Yorie вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 05.05.2012, 17:43   #20
Аватар для rage
Герой

По умолчанию Re: Парсер xml'ки

У каждого языка есть своя область применения где этот язык наиболее удобен. Perl как раз для подобных задач и был создан, по этому и решение на перле короче и быстрее, чем на пхп.
rage вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсер для AION zorgtm Серверная часть 41 30.09.2013 17:53
Java Mmotops парсер Хлорка Lineage II 1 08.04.2012 23:20
Парсер email ruslanback Курилка / Yak floor 17 26.03.2012 23:08


© 2007–2020 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 22:38. Часовой пояс GMT +3.

Вверх