Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ActivePerl: Посоветуйте модуль для работы с XML / 3 сообщений из 3, страница 1 из 1
19.10.2012, 15:57:39
    #38005946
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActivePerl: Посоветуйте модуль для работы с XML
Есть примерно такой XML-файл, описывающий структуру базы данных (таблицы, поля, связи):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
<Data>
  <Tables>
    <Table name="domain" alias="d">
      <Fields>
        <Field name="id" type="int" mode="id"/>
        <Field name="name" type="string" mode="key"/>
      </Fields>
    </Table>
    <Table name="profile" alias="r">
      <Fields>
        <Field name="id" type="int" mode="id"/>
        <Field name="name" type="string" mode="key"/>
        <Field name="title" type="string" mode="title"/>
        <Field name="require_password" type="boolean"/>
      </Fields>
    </Table>
    <Table name="terminal" alias="t">
      <Fields>
        <Field name="id" type="int" mode="id"/>
        <Field name="mac_addr" type="string" mode="key"/>
        <Field name="inet_addr" type="string"/>
        <Field name="subscriber_id" type="int" link_table="subscriber" link_column="id"/>
        <Field name="profile_id" type="int" link_table="profile" link_column="id"/>
        <Field name="registration_id" type="int"/>
        <Field name="session_id" type="int"/>
        <Field name="language_id" type="int"/>
        <Field name="disabled" type="boolean"/>
      </Fields>
    </Table>
    <Table name="terminal_profile" alias="sp">
      <Fields>
        <Field name="terminal_id" type="int" link_table="terminal" link_column="id"/>
        <Field name="profile_id" type="int" link_table="profile" link_column="id"/>
        <Field name="password" type="string"/>
      </Fields>
    </Table>
  </Tables>
</Data>



По этой структуре мне нужно в скрипте загрузить данные локально (закешировать данные).
Перед этим необходимо преобразовать XML в структуру.
Как это делает XML::Simple меня устраивает почти всем, за исключеним одного момента — структура считывается в хеш. А мне важно сохранить порядок записей в коллекциях Tables и Fields. Опция ForceArray тут не помогает, она индексирует не так, как мне надо (мне нужно, чтобы в Fields был массив Field, а опция делает внутри Fields массив из одного элемента Field, внутри которого остальная структура).
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
19.10.2012, 16:15:17
    #38005982
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActivePerl: Посоветуйте модуль для работы с XML
Наткнулся на XML::Mini::Document.
При использовании метода toHash() делает практически то, что мне нужно.
В принципе вопрос решен, но может есть более подходящий модуль?
...
Рейтинг: 0 / 0
19.10.2012, 18:50:01
    #38006238
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActivePerl: Посоветуйте модуль для работы с XML
Все же вопросы остались.
XML::Mini::Document слишком умный и если в Fields есть только один вложенный элемент Field, он его не делает массивом.
Можно ли вручную указать ноды, для которых всегда нужно создавать массив?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ActivePerl: Посоветуйте модуль для работы с XML / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]