1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dhar-YTTHpplePlus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

YTTHpplePlus — это расширение Hpple, которое расширяет функциональность работы с узлами HTML/XML документов: добавление, изменение и удаление узлов, а также экспорт документов. Исходный код Hpple можно найти по ссылке: Hpple на GitHub. Спасибо автору за первоначальный вклад.

Установка

pod 'YTTHpplePlus'
Использование соответствующих функций можно посмотреть в классе модульного тестирования NewPageTest. Поддерживаемые функции включают:
  • Обновление или добавление атрибутов:

    - (void)testSetAttr {
        NSArray *imgs = [self.doc searchWithXPathQuery:@"//img"];
    
        for (TFHppleElement* element in imgs) {
            NSString* raw = element.raw;
            NSString* tagName = element.tagName;
            NSString* content = element.content;
            NSDictionary* attributes = element.attributes;
    
            NSString* src = [element objectForKey:@"src"];
    
        }
    
        // Устанавливаем атрибут для первого элемента
        if (imgs.count > 0) {
            TFHppleElement* element = imags.firstObject;
            [self.doc setOrUpdateAttribute:@{@"width": @"13131"} inElement:element];
        }
    
        [self.doc exportXmlDoc];
    
        NSLog(@"=");
    }
  • Изменение содержимого узлов, таких как <p>, <a>, <div> и т. д.:

    - (void)testSetContent {
        NSArray *paragraphes = [self.doc searchWithXPathQuery:@"//p"];
        if (paragraphes.count) {
            TFHppleElement* element = paragraphes.firstObject;
            [self.doc setOrUpdateContent:@"Это обновлённое и заменённое содержимое" inElement:element];
        }
    
        [self.doc exportXmlDoc];
    }
  • Удаление узлов, включая дочерние элементы:

    - (void)testRemoveNode {
        NSArray *paragraphes = [self.doc searchWithXPathQuery:@"//p"];
        if (paragraphes.count) {
            TFHppleElement* element = paragraphes.firstObject;
            [self.doc deleteElement:element];
        }
    
        [self.doc exportXmlDoc];
    }
  • Экспорт документа после операций добавления, изменения и удаления:

    // Операции добавления, изменения и удаления
    NSString* exportedHtmlStr = [self.doc exportXmlDoc];

TODOS

  • При экспорте документа некоторые двойные теги становятся одинарными, например, <script>. Это вызывает проблемы при загрузке HTML-документа в веб-браузер. В проекте я использовал два метода для решения этой проблемы. Если у кого-то есть лучшие решения, пожалуйста, поделитесь ими.
  1. Регулярное выражение для замены тегов <script>:

    NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:@"<script.*</script>" options:0 error:nil];
    content  = [regularExpression stringByReplacingMatchesInString:content options:0 range:NSMakeRange(0, content.length) withTemplate:@""];
  2. Добавление дополнительного содержимого в теги <script>, а затем замена при создании окончательного документа:

    <script src="../js/news-script.js">var abcd;</script>
    htmlString = [htmlString stringByReplacingOccurrencesOfString:@"<![CDATA[var abcd;]]>" withString:@""];

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Мощный анализ HTML/XML документов, добавление, изменение и удаление узлов, экспорт результатов изменений. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dhar-YTTHpplePlus.git
git@api.gitlife.ru:oschina-mirror/dhar-YTTHpplePlus.git
oschina-mirror
dhar-YTTHpplePlus
dhar-YTTHpplePlus
master