Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 02.04.2009, 08:36   #1
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Радость Lib_xml - Разбиение XML/HTML документа

Вот накропал библиотечку, которая немножко упрощает задачу парсинга (разбиения) XML/HTML документов.
Функции в библиотеке такие:
string comb(sstring) - Удалить из текста лишние символыТакие как переносытабуляция и проч.
    
Рекомендуется делать эту операцию перед разбиением документа.

parse(sstring) - Разбивает XML/HTML документ на массив значений

integer length 
Возвращает количество записей в массиве полученном в результате разбиения

clean 
Очистка массива

integer isParam
(sstringiinteger) - Проверкаявляется ли запись в массиве каким либо параметром (типа имя="значение")
    
номер записи в массиве
    s 
имя параметра
    Возвращаемые значения
:
    
даявляетсянет
    Нумерация записей идёт с 0.
    
string getName
(iinteger) - Получить имя из параметра (типа имя="значение")
    
номер записи
    Например
в массиве есть запись под номерм 3 со следующим значениемsrc="picture.png",
    
тогда оператор getName(3вернёт строчку "src" (без кавычек)
    
Нумерация записей идёт с 0.
    
string getValue
(iinteger) - Получить значение параметра (типа имя="значение")
    
номер записи
    Например
в массиве есть запись под номерм 3 со следующим значениемsrc="picture.png",
    
тогда оператор getValue(3вернёт строчку "picture.png" (без кавычек)
    
Нумерация записей идёт с 0.

string get
(iinteger) - Получить запись из массива под номером i
    Нумерация записей идёт с 0.

put
(sstringiinteger) - Помещает строку s в массив в элемент с индексом i 
Как видите, всё довольно просто. По функциям напоминает Lib_parse.
К библиотеке прилагаю пример применения либы в программе на MP.
Пример очень маленький, можете скопировать и отсюда:
Program xml_test;
Uses xml;
Var 
sstring;
Begin
    
// --------------------------- ИМИТАЦИЯ РЕАЛЬНОГО XML ДОКУМЕНТА ---------------------------------------
    
:= '<class>' chr(13) + chr(10);
    
:= '<student>' chr(13) + chr(10);
    
:= '<name>Вася Пупкин</name>' chr(13) + chr(10);
    
:= '<age>18</age>' chr(13) + chr(10);
    
:= '<phone type="home" mobile="no">1234567</phone>' chr(13) + chr(10);
    
:= '</student>' chr(13) + chr(10);
    
:= '<student>' chr(13) + chr(10);
    
:= '<name>Лена Головач</name>' chr(13) + chr(10);
    
:= '<age>16</age>' chr(13) + chr(10);
    
:= '<phone type="work" mobile="yes">1234567890</phone>' chr(13) + chr(10);
    
:= '</student>' chr(13) + chr(10);
    
:= '</class>' chr(13) + chr(10);
    
    
s:=xml.comb(s); // Удаляем лишние символы типа переносов
    
xml.parse(s); // Разбиваем документ
    
    
DrawText(xml.get(9), 55); // выводим для примера 9-тый элемент массива
    
DrawText(xml.getName(9), 525); // выводим для примера имя параметра
    
DrawText(xml.getValue(9), 545); // выводим для примера значение параметра
    
RepaintDelay(5000);
End
В итоге получим для такого тестового документа:
<class>
<
student>
<
name>Вася Пупкин</name>
<
age>18</age>
<
phone type="home" mobile="no">1234567</phone>
</
student>
<
student>
<
name>Лена Головач</name>
<
age>16</age>
<
phone type="work" mobile="yes">1234567890</phone>
</
student>
</class> 
Получим такой массив:
class
student
name
Вася Пупкин
/name
age
18
/age
phone
type
="home"
mobile="no"
1234567
/phone
/student
student
name
Лена Головач
/name
age
16
/age
phone
type
="work"
mobile="yes"
1234567890
/phone
/student
/class 
Принимаются пожелания по доработке и улучшению библиотеки. Пробуйте и отпишитесь о полученном результате.
Вложения
Тип файла: zip Lib_xml.zip (2.0 Кб, 739 просмотров)
Тип файла: zip xml_test.zip (3.4 Кб, 768 просмотров)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
GRAY_WOLF (06.04.2009), Rock2roll (05.08.2010)
Старый 19.05.2009, 16:39   #2
PIRAT[E]
AnyKey`щик
 
Регистрация: 18.05.2009
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

а если в XML извесны толька теги, но не известно их расположение в массиве? Например:

<?xml version="1.0" encoding="UTF-8"?>
<data><phone></phone><name></name><info></info><address></address><program></program><code>OK_GET</code></data>

крута былобы еслиб можна было вытащить OK_GET из тегов <code></code> толька зная название самого тега...а не его расположение .....например если в цикле использовать))
(Offline)
 
Ответить с цитированием
Старый 19.05.2009, 16:40   #3
PIRAT[E]
AnyKey`щик
 
Регистрация: 18.05.2009
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

Есть еще какие-нибуть компоненты для парсинга ?
(Offline)
 
Ответить с цитированием
Старый 25.05.2009, 21:49   #4
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

Сообщение от PIRAT[E] Посмотреть сообщение
Есть еще какие-нибуть компоненты для парсинга ?
Есть ещё Lib_parse и там есть упрощенный алгоритм парсинга HTML страниц.
В нем все теги игнорируется. Извлекается только текст.
(Offline)
 
Ответить с цитированием
Старый 26.11.2009, 23:21   #5
Dj_Alex
ПроЭктировщик
 
Аватар для Dj_Alex
 
Регистрация: 08.03.2009
Адрес: Saransk
Сообщений: 143
Написано 25 полезных сообщений
(для 45 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

getvalue для param="123"/ возвращает 123", приходится проверять нет ли в конце / и обрубать его
__________________
(Offline)
 
Ответить с цитированием
Старый 27.11.2009, 01:28   #6
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

Ну, по правилам синтаксиса там пробел должен быть перед символом /.
Поэтому и глючит. Стоит доработать библиотеку чтоб этого не было?
(Offline)
 
Ответить с цитированием
Старый 15.12.2009, 11:31   #7
ksandr
AnyKey`щик
 
Регистрация: 22.09.2009
Сообщений: 7
Написано одно полезное сообщение
Ответ: Lib_xml - Разбиение XML/HTML документа

Здравствуйте.

при разбивке xml, строка типа имя="значение", если "значение" состоит из строки с пробелами, разбивается по пробелам.
например...
имя="зн ач ен ие", выглядит так
имя="зн
ач
ен
ие"

можно ли это поправить?
(Offline)
 
Ответить с цитированием
Старый 15.12.2009, 19:32   #8
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Сообщение Ответ: Lib_xml - Разбиение XML/HTML документа

Сообщение от ksandr Посмотреть сообщение
Здравствуйте.

при разбивке xml, строка типа имя="значение", если "значение" состоит из строки с пробелами, разбивается по пробелам.
например...
имя="зн ач ен ие", выглядит так
имя="зн
ач
ен
ие"

можно ли это поправить?
Проблема и мне знакома. На сколько я знаю odd на данный момент борется с данным багом.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Старый 17.12.2009, 22:11   #9
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

В данный момент работаю над совершенной новой версией парсера, приходится писать с нуля, так что немножко терпения...
(Offline)
 
Ответить с цитированием
Старый 09.01.2010, 08:34   #10
jkeks
Нуждающийся
 
Регистрация: 04.10.2007
Сообщений: 64
Написано одно полезное сообщение
Ответ: Lib_xml - Разбиение XML/HTML документа

думаю дешевле научить MP работать с YAML, чем XML
(Offline)
 
Ответить с цитированием
Старый 12.01.2010, 01:19   #11
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

Исправленная версия библиотеки.
В частности исправлен баг когда в параметре тега встречался пробел.
Вложения
Тип файла: zip Lib_xml.zip (2.1 Кб, 601 просмотров)
(Offline)
 
Ответить с цитированием
Старый 12.01.2010, 20:04   #12
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Плохо Ответ: Lib_xml - Разбиение XML/HTML документа

С новой библиотекой мидлет вешается , вертаю старую все встает на свои места.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Старый 13.01.2010, 20:53   #13
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

Сообщение от GRAY_WOLF Посмотреть сообщение
С новой библиотекой мидлет вешается , вертаю старую все встает на свои места.
Пришли в личку пример XML на котором мидлет вешается, разберусь.
(Offline)
 
Ответить с цитированием
Старый 16.01.2010, 02:59   #14
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

Вроде бы нашел причину бага. Исправил.
В частности был исправлен баг с символом / в конце.
Иногда выдавало типа:
city="Moscow"/
вместо
city="Moscow"
Вложения
Тип файла: zip Lib_xml.zip (2.2 Кб, 625 просмотров)
(Offline)
 
Ответить с цитированием
Старый 16.01.2010, 20:11   #15
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Lib_xml - Разбиение XML/HTML документа

Если я что-то в чем-то понимаю, то тег <MMWEATHER> должен парсится(игрорироваться) весть, а в результате xml.getValue(adrr) выдает вот это MWEATHE хотя парсер должен был его игнорировать и выдать по заданному адресу только то, что в кавычках. Такое замечено на всех сайтах, где используется xml формат...
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lib_parse - Разбиение строки odd Библиотеки 20 19.12.2013 20:13
Конструктор Концепт-документа Diab10 Болтовня 9 12.07.2009 20:13
HTML*JavaScript*Help zheland Болтовня 4 01.03.2008 10:14
Разбиение числа на отдельные цифры Trilliput BlitzMax 4 29.11.2007 22:09
Читаем информацию с html страницы andresyuk_be Основной форум 17 15.11.2007 22:41


Часовой пояс GMT +4, время: 19:15.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com