8.х работа с html файлом 1С 8.1

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем rockedit, 20 мар 2012.

  1. TopicStarter Overlay
    rockedit
    Offline

    rockedit Опытный в 1С

    Регистрация:
    6 дек 2010
    Сообщения:
    120
    Симпатии:
    0
    Баллы:
    26
    Всем доброго времени суток!
    Подскажите пожалуйста как можно решить следующую задачу:
    Есть html файл, он может быть совершенно любого содержания, к примеру
    HTML:
    <html>
    <head></head>
    <body>
    <h1>Text!</h1>
    </body>
    </html>
    [/CODE]
    Из этого всего мне нужно записать в переменную типа "Строка" только
    [CODE]
    <body>
    <h1>Text!</h1>
    </body>
    Я предпологал 2 варианта
    1) прочитать файл как текстовый, выгрузить его в строку и удалить все символы до и после тегов <body>.
    2) Использовать ЧтениеHTML. читаете в него html страницу, потом преобразовать в ДокументDOM, но не знаю как мне потом получить то что нужно
    Заранее всем спасибо за помощь!
  2. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    а где вопрос то? кстати почему у вас сначала конец тега идет,а потом его начало?

    если вам нужно получить только текст заключенный в тег <code>, то:
    1) придется ставить платформу 8.2, потому что в 8.1 нет обЪекта ЧтениеHTML. но это не проблема - конвертнуть базу (естественно сначала на копии).
    2) вот пример кода работы с ДокументDOM:


    Код:
    ЧтениеHTML = Новый ЧтениеHTML;
    ЧтениеHTML.ОткрытьФайл(ЭлементМассива.ПолноеИмя);
    
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(ЧтениеHTML);
    
    ЭлементыHTML = ДокументDOM.ПолучитьЭлементыПоИмени("code");
    
    ТекСтрока = ЭлементыHTML[0].ТекстовоеСодержимое;
    
    ЧтениеHTML.Закрыть();
    
  3. TopicStarter Overlay
    rockedit
    Offline

    rockedit Опытный в 1С

    Регистрация:
    6 дек 2010
    Сообщения:
    120
    Симпатии:
    0
    Баллы:
    26
    Это мне модератор так сообщение подправил красиво. там изначально было так два блока - "CODE", но к моей задаче они отношения никакого не имеют, это просто я хотел красиво оформить сообщение в теме.
    У меня есть html документ с содержимым

    <html>
    <head></head>
    <body>
    <h1>Text!</h1>
    </body>
    </html>

    А мне нужно,что бы после прочтения этого файла в переменную типа "Строка" записалось:
    <body>
    <h1>Text!</h1>
    </body>
    А вопрос - как это сделать?

    П,С, мне нужно не только текстовое содержимое, мне нужно чтобы код один в один между тегами (включая и сами теги) <body> попал в переменную
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Вместо CODE нужно использовать code1C, это на будущее тогда:)
  5. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    ну попробуйте:
    Код:
    ЭлементыHTML = ДокументDOM.ПолучитьЭлементыПоИмени("body");
    ТекСтрока = "<body>"+ЭлементыHTML[0].ТекстовоеСодержимое+"</body>";
  6. TopicStarter Overlay
    rockedit
    Offline

    rockedit Опытный в 1С

    Регистрация:
    6 дек 2010
    Сообщения:
    120
    Симпатии:
    0
    Баллы:
    26
    Ну это же не 1с код, а html разметка. Ну да ладно.

    Пробовал, он возврашает только текстовое содержимое, а мне нужны еще и вложенные теги. скажем если код такой
    <html>
    <head></head>
    <body>
    <h1>Text!</h1>
    <img src = "1.jpg">
    </body>
    </html>
    он вернет только "Text!"
    а мне нужно чтоб вернул
    <body>
    <h1>Text!</h1>
    <img src = "1.jpg">
    </body>
  7. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    ну тогда может и вправду не париться с html...

    1) читаем файл в текстовый документ.
    2) ищем <body>
    3) заменяем все, что до <body> на пустую строку
    4) ищем </body>
    5) заменяем все, что после <body> на пустую строку
  8. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ТекстовыйДокумент = Новый ТекстовыйДокумент;
    ТекстовыйДокумент.Прочитать("Z:\readme.htm");
    
    Текст = ТекстовыйДокумент.ПолучитьТекст();
    Позиция1 = Найти(Текст,"<body>");
    Позиция2 = Найти(Текст,"</body>");
    ИскомыйТекст = Сред(Текст, Позиция1, Позиция2-Позиция1+7);
    
    сообщить(ИскомыйТекст);
    
    КонецПроцедуры
  9. TopicStarter Overlay
    rockedit
    Offline

    rockedit Опытный в 1С

    Регистрация:
    6 дек 2010
    Сообщения:
    120
    Симпатии:
    0
    Баллы:
    26
    Спасибо. попробую.

Поделиться этой страницей