powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ActivePerl: Посоветуйте модуль для работы с XML
3 сообщений из 3, страница 1 из 1
ActivePerl: Посоветуйте модуль для работы с XML
    #38005946
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть примерно такой 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
ActivePerl: Посоветуйте модуль для работы с XML
    #38005982
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наткнулся на XML::Mini::Document.
При использовании метода toHash() делает практически то, что мне нужно.
В принципе вопрос решен, но может есть более подходящий модуль?
...
Рейтинг: 0 / 0
ActivePerl: Посоветуйте модуль для работы с XML
    #38006238
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все же вопросы остались.
XML::Mini::Document слишком умный и если в Fields есть только один вложенный элемент Field, он его не делает массивом.
Можно ли вручную указать ноды, для которых всегда нужно создавать массив?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ActivePerl: Посоветуйте модуль для работы с XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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