当前位置: 首页 > news >正文

C HTML格式解析与生成

cmake报错替换 

if(NOT MyHTML_BUILD_WITHOUT_THREADS OR NOT MyCORE_BUILD_WITHOUT_THREADS)
    set(CMAKE_THREAD_PREFER_PTHREAD 1)
    if (WIN32)
        set(CMAKE_USE_WIN32_THREADS_INIT ON)
        set(CMAKE_THREAD_PREFER_PTHREADS TRUE)
        set(THREADS_PREFER_PTHREAD_FLAG TRUE)
    else ()
        find_package(Threads REQUIRED)
        if(NOT CMAKE_USE_PTHREADS_INIT)
            message(FATAL_ERROR "Could NOT find pthreads (missing: CMAKE_USE_PTHREADS_INIT)")
        endif()
    endif()
endif() 

测试

add_executable(example examples/myhtml/modify_and_serialize.c)
target_link_libraries(example ${PROJECT_LIB_STATIC})

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <myhtml/serialization.h>/***  Write output*  @param  buffer*  @param  size*  @param  ptr*/
mystatus_t write_output(const char* data, size_t len, void* ctx)
{printf("%.*s", (int)len, data);return MyCORE_STATUS_OK;
}/***  Main procedure*  @return int*/
int main()
{// initalize html enginemyhtml_t *myhtml = myhtml_create();myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0);// init treemyhtml_tree_t *tree = myhtml_tree_create();myhtml_tree_init(tree, myhtml);// input stringconst char *input = "<html><head></head><body><a href=http://nu.nl></body></html>";// parse htmlmyhtml_parse(tree, MyENCODING_UTF_8, input, strlen(input));// collection of linksmyhtml_collection_t *collection = myhtml_get_nodes_by_name(tree, NULL, "a", 1, NULL);// iterate over all nodesfor (size_t i = 0; i < collection->length; ++i){// add attributemyhtml_attribute_add(collection->list[i], "title", 5, "my value", 8, MyENCODING_UTF_8);}// write the document againmyhtml_serialization_tree_callback(myhtml_tree_get_document(tree), write_output, NULL);myhtml_collection_destroy(collection);myhtml_tree_destroy(tree);myhtml_destroy(myhtml);// donereturn 0;
}
修改前

"<html><head></head><body><a href=http://nu.nl></body></html>

修改后

<html><head></head><body><a href="http://nu.nl" title="my value"></a></body></html>

参考

https://github.com/lexborisov/Modest

GitHub - lexborisov/myhtml: Fast C/C++ HTML 5 Parser. Using threads.


创作不易,小小的支持一下吧!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 浅谈Kafka(二)
  • EmguCV学习笔记 VB.Net 第5章 图像变换
  • 【机器学习】 1. 总览介绍
  • 开源大屏设计工具DataRoom
  • Elasticsearch:使用 ELSER 进行语义搜索 - sparse_vector
  • 在pytorch中TensorBoard的使用
  • OpenCV c++ 实现图像马赛克效果
  • Magenta——利用深度学习生成音乐和艺术内容
  • 基于STM32的温湿度采集设计
  • npm install` 报错
  • 【软件测试面试题】WEB功能测试(持续更新)
  • 黑神话:悟空-配置推荐
  • catvod、TVBox源的解析过程分析和Spider参数覆盖问题解决
  • 【计算机网络】网络基础
  • Node.js自学速通---- 24-8-22 22-44
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • C++类的相互关联
  • co.js - 让异步代码同步化
  • HTML-表单
  • Java,console输出实时的转向GUI textbox
  • js算法-归并排序(merge_sort)
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • VUE es6技巧写法(持续更新中~~~)
  • vue2.0项目引入element-ui
  • vue-loader 源码解析系列之 selector
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 算法之不定期更新(一)(2018-04-12)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 温故知新之javascript面向对象
  • 一些css基础学习笔记
  • 译自由幺半群
  • 智能合约开发环境搭建及Hello World合约
  • 最近的计划
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • # include “ “ 和 # include < >两者的区别
  • #WEB前端(HTML属性)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.each()与$(selector).each()
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (SpringBoot)第二章:Spring创建和使用
  • (翻译)terry crowley: 写给程序员
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (七)理解angular中的module和injector,即依赖注入
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十三)Flink SQL
  • (四)js前端开发中设计模式之工厂方法模式
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (源码分析)springsecurity认证授权
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法