29.12.2009, 16:10 | #1 |
Участник
|
Удаление HTML тегов
Добрый день!
Делаю импорт из файла в базу данных методами Аксапты, т.е. написана форма, к ней привязан класс, который открывает выбранный файл, парсит его и вносит в базу. Всё вроде бы работает... Но... Честно говоря, есть одно слабое место у этого класса - это метод удаления HTML тегов. Ооочень криво написана это моя функция. Вопросы: 1) Вроде бы нету стандартной функции (в этой версии Аксапты) для удаления HTML тегов. Верно ? 2) Встречал ли кто-нибудь пользовательскую функцию (или разрабатывал сам) для удаления HTML тегов из строки ? Спасибо! Axapta 2.5 Service Pack 5 |
|
30.12.2009, 10:59 | #2 |
Участник
|
Ну или помогите регулярное выражение написать.
Выражение должно вырезать символы заключённые между тегами <td> и </td> Последний раз редактировалось Zeratul; 30.12.2009 в 11:38. |
|
30.12.2009, 11:26 | #3 |
Участник
|
Последний раз редактировалось belugin; 30.12.2009 в 11:32. |
|
30.12.2009, 15:13 | #4 |
Участник
|
немножко не то.
Это же в РНР расписана реализация... |
|
30.12.2009, 15:33 | #5 |
Участник
|
В 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; |
|
|
За это сообщение автора поблагодарили: Zeratul (1). |
30.12.2009, 15:43 | #6 |
Участник
|
через COM можно использовать выражения VBS а начиная с версии 4 дотнетные. Синтаксис приближается к указанным
|
|
30.12.2009, 16:20 | #7 |
Участник
|
Владимир, спасибо!
Как оказалось, у меня самого почти получилось... Ошибка была в том, что у меня в коде было написано: X++: textBuffer.regularExpressions(true); |
|
12.01.2010, 11:25 | #8 |
Участник
|
Но работа с регулярными выражениями в "двойке" действительно оставляет желать лучшего
|
|