AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.12.2009, 16:10   #1  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Удаление HTML тегов
Добрый день!
Делаю импорт из файла в базу данных методами Аксапты, т.е. написана форма, к ней привязан класс, который открывает выбранный файл, парсит его и вносит в базу. Всё вроде бы работает... Но...

Честно говоря, есть одно слабое место у этого класса - это метод удаления HTML тегов. Ооочень криво написана это моя функция. Вопросы:
1) Вроде бы нету стандартной функции (в этой версии Аксапты) для удаления HTML тегов. Верно ?
2) Встречал ли кто-нибудь пользовательскую функцию (или разрабатывал сам) для удаления HTML тегов из строки ?

Спасибо!


Axapta 2.5 Service Pack 5
Старый 30.12.2009, 10:59   #2  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Ну или помогите регулярное выражение написать.
Выражение должно вырезать символы заключённые между тегами <td> и </td>

Последний раз редактировалось Zeratul; 30.12.2009 в 11:38.
Старый 30.12.2009, 11:26   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://www.bing.com/search?q=strip+h...lar+expression

Последний раз редактировалось belugin; 30.12.2009 в 11:32.
Старый 30.12.2009, 15:13   #4  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
немножко не то.
Это же в РНР расписана реализация...
Старый 30.12.2009, 15:33   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
В Ax2.5 парсинг HTML основан на классе TextBuffer. По нему есть кое-какая справка, поскольку это класс ядра Axapta.

X++:
   TextBuffer  textBuffer = new TextBuffer();
    ;

    textBuffer.appendText("<html><body>");
    textBuffer.appendText("<h3>The HTML Viewer/Editor</h3>");
    textBuffer.appendText("<p>The HTML Control can Show and Edit HTML text.</p>");
    textBuffer.appendText("<p>It supports images and <a href=next>hyperlinks</a></p>");
    textBuffer.appendText("</body></html>");

    // Все фрагменты текста ограниченные угловыми скобками
    while (textBuffer.nextToken(0,"<>"))
    {
        print textBuffer.token();
    }

    pause;
X++:
   TextBuffer  textBuffer = new TextBuffer();
    int         posFrom,
                posTo,
                posNext;
    ;

    textBuffer.appendText("<html><body>");
    textBuffer.appendText("<h3>The HTML Viewer/Editor</h3>");
    textBuffer.appendText("<p>The HTML Control can Show and Edit HTML text.</p>");
    textBuffer.appendText("<p>It supports images and <a href=next>hyperlinks</a></p>");
    textBuffer.appendText("</body></html>");

    // Нужно отключить использование регулярных выражений, 
    // поскольку угловые скобки - это спец.символы регулярных выражений
    textBuffer.regularExpressions(false);

    // Игнорировать регистр искомых символов
    textBuffer.ignoreCase(true);

    // Поиск абзацев. Т.е. фрагментов между <p> и </p>
    posNext = 0;
    while (textBuffer.find("<p>",posNext))
    {
        posNext = textBuffer.matchPos() + textBuffer.matchLen();
        if (textBuffer.find("</p>",posNext))
        {
            posFrom = posNext;
            posTo   = textBuffer.matchPos();
            posNext = textBuffer.matchPos() + textBuffer.matchLen();
            print textBuffer.subStr(posFrom, posTo - posFrom);
        }
    }

    pause;
Примеры использования относятся к классам и формам создания/редактирования справки в Axapta. Т.е. это формы вроде SysInetHTMLEditor
За это сообщение автора поблагодарили: Zeratul (1).
Старый 30.12.2009, 15:43   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Zeratul Посмотреть сообщение
немножко не то.
Это же в РНР расписана реализация...
через COM можно использовать выражения VBS а начиная с версии 4 дотнетные. Синтаксис приближается к указанным
Старый 30.12.2009, 16:20   #7  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Владимир, спасибо!

Как оказалось, у меня самого почти получилось...
Ошибка была в том, что у меня в коде было написано:

X++:
textBuffer.regularExpressions(true);
А нужно было выставить false. В этом и была загвоздка.
Старый 12.01.2010, 11:25   #8  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Но работа с регулярными выражениями в "двойке" действительно оставляет желать лучшего
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отмена применения и удаление операций Иннокентий NAV: Функционал 2 24.03.2005 11:25
Проблема с удаление трассировки товара Nataly NAV: Функционал 0 12.07.2004 12:44
Отмена примененных операций Navision Attain Pavel NAV: Функционал 21 03.03.2004 10:52
Рассопоставление сопоставленных платежей и задолженностей! Yuriy NAV: Функционал 19 21.01.2004 16:06
[attain] удаление учтенных документов LeXoN NAV: Программирование 2 17.09.2003 10:42

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:11.