Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование регулярных выражений в XML 
V
    Опции темы
HeR0vn1k
Дата 6.11.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 19.10.2007
Где: Tyumen

Репутация: нет
Всего: нет



Здравствуйте.
Не получается составить регулярное выражение с поиском шаблона вида XML структуры.

Данные имеют вид:
Код

<?xml version="1.0" encoding="windows-1251"?>
<REPORT>
<PARAMS>
    <PARAM caption="Дата: с" name="date_00_start" default="позавчера" type="date" validators="date" description="Начало даты" />
    <PARAM caption="по" name="date_01_end" default="сегодня" type="date" validators="date" description="Конец даты" />
    <PARAM caption="Клиент" name="text_02_" default="" type="text" description="" />
    <PARAM caption="radio" name="radio_03_" default="" type="radio" description="" />
    <PARAM caption="text" name="text_04_" default="" type="text" validators="numeric" description="" />
</PARAMS> 
<PUBLISHERS>
        <SQL >
           Select P.OBJECT_ID, P.NAME, P.SHORT, P.POST_INDEX, P.HOUSE, T.SHORT_LOCALITY_TYPE, T.NAME as TOWN, 
                     R.SHORT as SHORT_PROPERTY, S.SHORT_STREET_TYPE, S.NAME as STREET, T.REGION, P.VISIBLE,R.NAME as PROPERTY, P.MAIL, 
                     P.PARENT_ID, P.CODE, ROWNUM as NUM
           FROM PUBLISHERS P,V_TOWNS T,V_STREETS S,PROPERTIES R
           where P.TOWN_ID=T.OBJECT_ID and p.STREET_ID = S.OBJECT_ID and R.OBJECT_ID=P.PROPERTY_ID and p.CODE=:PUBLISHER_ID
        </SQL>
...
</PUBLISHERS>
</REPORT>

Элемент <PARAMS> всегда следует после <REPORT> и никогда не повторяется. Внутри него может быть один или несколько элементов <PARAM параметр1="значение1" параметр2="значение2 параметрn="значениеn""/>.
Надо найти и удалить все строки заключенные в <PARAMS> элементы </PARAMS> включая сам элемент PARAMS.

Написал с помощью оператора подстановки s///. Получилось найти строку такого простого вида: <PARAMS> текст </PARAMS>, но если встречаются знаки ", <, >,=, то оператор не срабатывает.
Как можно написать регулярное выражение, чтоб поиск производился на совпадения такой структуры?

За ранее спасибо!
PM MAIL   Вверх
BlackLFL
Дата 6.11.2007, 13:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 8
Всего: 12



Воспользуйтесь библиотекой для работы с XML структурами
CPAN XML
PM WWW   Вверх
amg
Дата 6.11.2007, 14:08 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



В простейшем случае можно обойтись $xml =~s|<PARAMS>.*</PARAMS>\||s;. Но правильность работы не будет гарантирована. Лучше воспользоваться советом BlackLFL.
PM MAIL   Вверх
HeR0vn1k
Дата 6.11.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 19.10.2007
Где: Tyumen

Репутация: нет
Всего: нет



BlackLFL, спасибо. Буду смотреть пакет.


amg, вставил твой код. Работает нормально. Как раз и надо было удалять эту часть.
В чем может быть не правильность работы?

Получается, если более детально и выборочно работать с элементами внутри <PARAMS>, то не подойдет. Это имел ввиду, amg?

Это сообщение отредактировал(а) HeR0vn1k - 6.11.2007, 15:20
PM MAIL   Вверх
amg
Дата 6.11.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(HeR0vn1k @  6.11.2007,  14:54 Найти цитируемый пост)
В чем может быть не правильность работы?
Например, где то дальше встретится комбинация символов "</PARAMS>" - и XML полетит. А если XML создаешь не ты сам, то такой возможности исключить нельзя.

PM MAIL   Вверх
HeR0vn1k
Дата 7.11.2007, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 19.10.2007
Где: Tyumen

Репутация: нет
Всего: нет



Данные идут с моей формы, откуда поступают <PARAMS> ... </PARAMS>, точно в таком виде в каком надо и не будет левых вставок. Так что, !пока "не правильности" не должно быть. Если будут изменения, то придется исправлять. А так, сойдет простой вариант. -Спасибо amg.

Это сообщение отредактировал(а) HeR0vn1k - 7.11.2007, 07:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.