Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Парсер xml'ки
#1
Ответ
#2
как вариант

PHP код:
<?php 
foreach($xml->npc as $npcElement) {
foreach(
$npcElement->set as $setElement) {
if (
$setElement->name == "aggroRange") {}
}
...
}

http://php.net/manual/en/simplexml.examples-basic.php
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#3
Ну так это аналогия моего кода для вытаскивания из тега <set>, а теперь мне надо иное. Как переделать пока не понимаю...
Ответ
#4
Вроде пример понятный был... вот детальнее

PHP код:
<?php 
foreach($xml->npc as $npcElement) {
$npcId = (string)$npcElement["npc"];
foreach(
$npcElement->rewardlist as $rewardListElement) {
$gChance = (string) $rewardListElement["chance"];
foreach(
$rewardListElement as $groupElement) {
foreach(
$groupElement->reward as $rewardElement) {
....

printf("%d %d... " , $npcId, ... )
}
}
}
...
}
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#5
ооо, дошло, спасибо большое, дооформлю форматный вывод и выкину что вышло.
upd:
PHP код:
<?php
set_time_limit
(0);
$xml = simplexml_load_file('18900-18999.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"];
$rewardMIN = (string)$rewardElement["min"];
$rewardMAX = (string)$rewardElement["max"];
$rewardCHANCE = (string)$rewardElement["chance"];
$endCHANCE= $gChance/100*$rewardCHANCE;
printf("%d %d %d-%d %6.4f</br>",$npcId, $rewardID, $rewardMIN, $rewardMAX,$endCHANCE);
}
}
}
}
?>
осталось придумать как заменить id на название предмета...
Ответ
#6
Составь из клиентских данных таблицу код->название (распарсив itemname.dat etc) и поместив все это например в CSV, затем загружать в процессе работы для замены кода на название.

PHP код:
<?php 
$nameData
= array();
foreach(
loadCSV('names.csv') as $csvLine) {
$nameData[0] = $nameData[1];
}

...
$itemName = $nameData[$rewardId];
...
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#7
Aquanox Написал:Составь из клиентских данных таблицу код->название (распарсив itemname.dat etc) и поместив все это например в CSV
Сделал через эксель и парсеры тут в общем то не нужны...

Aquanox Написал:затем загружать в процессе работы для замены кода на название.

PHP код:
<?php 
$nameData
= array();
foreach(
loadCSV('names.csv') as $csvLine) {
$nameData[0] = $nameData[1];
}

...
$itemName = $nameData[$rewardId];
...
А вот тут не осилил...
Ответ
#8
Shayne Написал:Сделал через эксель и парсеры тут в общем то не нужны...


А вот тут не осилил...

я могу дать XML вид для itemname.dat

[src=xml]
<out name="dec-ItemName-e.dat">
<data>
<item_id>17</item_id>
<name>Wooden Arrow</name>
<additionalname></additionalname>
<popup>An arrow made of wood. It is an arrow used for a no grade bow.</popup>
<description>-1</description>
<unknown_1>0</unknown_1>
<unknown_2>0</unknown_2>
<set_enchant_count>0</set_enchant_count>
<set_enchant_effect></set_enchant_effect>
<color>1</color>
</data>
[/src]

дайте ток файлы
consulo.io - Consulo - multi-language IDE
Ответ
#9
Было бы очень кстати. Itemname-ru, Itemname-e
Ответ
#10
Shayne Написал:Было бы очень кстати. Itemname-ru, Itemname-e

дайте датники плз
consulo.io - Consulo - multi-language IDE
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)