XML概述、格式、解析-WEB

XML概述

  • XML(Extensible Markup Language)

    可扩展的标识语言

    数据传输的一种格式

    树形结构(节点)

  • 优点

    解析的更快 : 使用标签语言,能够很快定位

    占用空间小 : 纯文本格式

    可读性强 : 带有名字的标签我们都很喜欢

    跨平台性 : 只要有解析的库文件,无论什么系统,什么语言都可以无障碍的通信

    流行 : 现在最流行的一种数据传输格式

XML的格式

  • 所有元素都须有关闭标签

  • 标签对大小写敏感

  • 标签没有被预定义(自己命名)

  • 第一句格式必须为 <?xml version="1.0"?>

  • 文档必须有根元素的单一标签对

  • 每个标签都可以有自己的属性

  • 通常不需要手动创建XML

XML的应用场合

  • WEB客户端和服务器数据的格式

  • 广泛作为网络之间的数据格式

  • 可以在互不兼容的系统间交换数据

  • 对数据库支持不好的系统中用XML保存数据

  • 用来作为配置文档

  • 能够用来显示您的技术很高深(0

XML解析-WEB

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

CGI读取XML

  • open -> read -> printf

JS解析XML

  • 获取XML文档

    var XMLDoc = XMLHttpRequest.responseXML;

  • 获取文档中内容

    XMLDoc.getElementsByTagName("blackbeetle");

##XML解析-C语言

相关类型

  • xmlDocPtr代表一个XML文档的指针类型

  • xmlNodePtr代表一个节点的指针类型

打开XML

  • xmlDocPtr xmldoc=xmlParseFile(“file_name”);

获得根节点

  • xmlNodePtr cur=xmlDocGetRootElement(xmldoc);

  • cur=cur->xmlChildrenNode;//子节点集合

  • cur=cur->next; //下一个字节点

其他常用解析函数

  • char* value = (char*)xmlNodeGetContent(cur);//得到节点中的信息

  • xmlFree(value); //free得到的数据(必须free)

  • xmlFreeDoc(doc); //释放xml解析库所用资源

  • xmlKeepBlanksDefault(0); //去除空格

  • xmlCleanupParser();

  • xmlStrcmp(curNode->name, BAD_CAST “root”); //字符串比较 BAD_CAST 宏定义 强制转为XML字符串

XML生成-C语言

生成版本号1.0

  • xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");

创建新节点

  • root = xmlNewNode(NULL, BAD_CAST"rfid_class");

配置根节点

  • xmlDocSetRootElement(doc, root);

添加子节点

  • xmlAddChild(root, node);

为节点添加节点名以及内容

  • xmlNewTextChild(node, NULL, BAD_CAST “class_name”, BAD_CAST(“text”));

保存文件

  • xmlSaveFormatFileEnc(xml_name, doc, “utf-8”, 1);

  • xmlSaveFile(xml_name, doc);

释放文档内节点动态申请的内存

  • xmlFreeDoc(doc);

libXML的移植

libxml 是一个xml的c语言版的解析器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MathType7.9最新免费注册机注册码激活码分享

MathType作为一个强大的数学公式编辑器&#xff0c;广泛用于教育、科研和出版领域。它支持多种文档格式和数学符号&#xff0c;是撰写科技文档不可或缺的工具。对于一些个人用户和小型机构来说&#xff0c;正版软件的高昂价格可能是一个负担。因此&#xff0c;寻找合法途径下的…

Windows 10 以上版本用久了应该重新安装还是重置呢?

今天明月工作电脑的 Windows 10 因为安装过太多软件和使用太久了的缘故造成网络总是很不稳定&#xff0c;总是出现一些莫名其妙的问题&#xff0c;实在是懒得去查找和排错了&#xff0c;就想着干脆推到重来吧&#xff0c;这样性能表现还会提升不少&#xff0c;并且可以一次性的…

向量化:机器学习中的效率加速器与数据桥梁

在机器学习领域的广袤天地中&#xff0c;向量化技术以其独特的魅力&#xff0c;为数据处理和模型训练注入了强大的动力。本文将深入探讨向量化在机器学习领域中的体现&#xff0c;剖析其如何助力模型实现高效的数据处理和精确的结果预测&#xff0c;并通过丰富的案例和详尽的数…

容器中运行ping提示bash: ping: command not found【笔记】

容器中运行ping提示bash: ping: command not found 原因是容器中没有安装ping命令 在容器中安装ping命令&#xff0c;可以使用以下命令&#xff1a; 对于基于Debian/Ubuntu的容器&#xff0c;使用以下命令&#xff1a; apt-get update apt-get install -y iputils-ping对于基…

【如何利用c++RAII技术实现自动加解锁】

1. 思路 可以使用C中的 RAII&#xff08;资源获取即初始化&#xff09;技术来实现自动加锁解锁。这意味着你可以创建一个包含加锁和解锁操作的类&#xff0c;并在其构造函数中加锁&#xff0c;在析构函数中解锁。这样&#xff0c;在该类的实例化对象超出作用域时&#xff0c;自…

sqlite数据库存储

Android中的SQLite是一个轻量级的数据库管理系统&#xff0c;它内置在Android系统中&#xff0c;允许开发者在应用程序中存储和管理结构化数据。下面我将详细解释如何在Android中使用SQLite进行数据库操作&#xff0c;包括创建数据库、升级数据库、添加数据、更新数据、删除数据…

分布式锁(2):基于数据库实现分布式锁

1 悲观锁 1.1 原理 在select的时候就会加锁,采用先加锁后处理的模式,虽然保证了数据处理的安全性,但也会阻塞其他线程的写操作。在读取数据时锁住那几行,其他对这几行的更新需要等到悲观锁结束时才能继续 。select ... for update 悲观锁适用于写多读少的场景,因为拿不…

Nginx在线部署和离线部署方式

Nginx 有两种安装方式: 1)在线安装的方式 1.添加Nginx 到yum源 sudo rpm -Uvh <http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm> 2.安装Nginx,直接使用yum方式 yum install -y nginx 3.启动nginx,刚安装的nginx不…

一图读懂:Flink CDC如何流式写入Paimon?

一图读懂&#xff1a;Flink CDC如何流式写入Paimon&#xff1f; 以Mysql CDC至Paimon为例 整体架构 MySQL CDC SourceSnapshotReader读取快照全量数据&#xff0c;BinlogReader读取增量数据。 paimon sink 实现桶级别的写入&#xff0c;compactManager实现异步compaction co…

第六讲:AD、DA的工作原理及实现、运放电路

DA 数模转换器 (DAC) 数模转换器&#xff08;Digital-to-Analog Converter&#xff0c;简称DAC&#xff09;是一种将数字信号转换为模拟信号的电子装置。DAC在各种电子设备中广泛应用&#xff0c;如音频设备、通信系统、测量设备和控制系统中。以下是DAC的主要概念和应用。…

Windows下从源码编译ONNX Runtime

前言&#xff1a;作者在做深度学习模型部署过程中&#xff0c;遇到一些算子问题&#xff0c;需要在ONNX Runtime平台上实现一些自定义算子&#xff0c;在此过程中&#xff0c;onnxruntime官方给的现成的库缺少一些必要文件&#xff0c;遂需要下载onnxruntime源码并进行编译。 …

【PECL】在扩展中实现 autoload

【PECL】在扩展中实现 autoload 摘要PHP代码想这么写C 代码这么实现 摘要 php-8.3.x 用扩展写个框架。想实现类管理器&#xff0c;自动加载&#xff0c;上代码&#xff1a; PHP代码想这么写 $ws new \Ziima\Applet(); $ws->import(Ziima, ../base/core); $ws->runAu…

调用万维易源API生成AI艺术二维码

目录 1. 作者介绍2. 艺术二维码2.1 艺术二维码的作用2.2 艺术二维码的应用场景2.3调用万维易源API生成AI艺术二维码 3. 实验过程3.1算法流程3.2完整代码3.3测试结果 1. 作者介绍 韩阳&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2023级研究生 研究方向&am…

C++ 并发编程指南(13)线程池原理与实践 | 13.2、关键组件实现

文章目录 一、关键组件实现1、任务队列 前言&#xff1a; 一、关键组件实现 1、任务队列 任务队列的主要功能是保存要执行的任务&#xff0c;有下面这些需要解决的问题 问题一&#xff1a;如何保证任务的通用性&#xff1f; 因为任务队列要有通用性&#xff0c;所以规定任务队…

力扣2653.滑动子数组的美丽值

力扣2653.滑动子数组的美丽值 计数排序&#xff1a;数值作为下标 记录个数 求第x小的数 &#xff1a; 暴力枚举负数 直到找到第x个负数 class Solution {public:vector<int> getSubarrayBeauty(vector<int>& nums, int k, int x) {const int BIAS 50;int c…

两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析-文献精读20

Characterization of two O-methyltransferases involved in the biosynthesis of O-methylated catechins in tea plant 两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析 茶树三维基因组-文献精读19 比较转录组分析揭示了116种山茶属(Camellia)植物的深层系统…

设计模式23——状态模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 状态模式&#xff08;State&am…

固件windows升级

升级主机驱动截图及描述补充&#xff1a; 由于卡上的固件需要更换版本&#xff0c;所以总共下载四个东西&#xff1a;固件、驱动、转译工具及Cli命令。&#xff08;转译工具是为了解密&#xff0c;如果固件上有加密日志&#xff0c;要进行查看操作的时候&#xff09; 通过命令…

《幸福》期刊杂志投稿发表

《幸福》杂志是由国家新闻出版总署批准&#xff0c;武汉出版社主管&#xff0c;武汉市妇联和武汉出版社联合主办&#xff0c;面向全国发行的人文社科综合期刊。办刊宗旨&#xff1a;宣传普及科学知识及科学方法的研究&#xff1b;倡导新型的人际关系&#xff0c;推介健康的家庭…

OC和Swift的区别,发送消息和执行方法的区别

在 Objective-C 和 Swift 中&#xff0c;方法调用的机制存在显著的区别&#xff0c;具体体现在消息传递和方法调用上。以下是关于这两种机制的详细说明&#xff1a; Objective-C&#xff1a;发送消息 消息传递机制 Objective-C 使用消息传递&#xff08;Message Passing&…