xml 文件读写插件 ReadXml

码农软件 · 软件分类 · XML相关工具 · 2019-09-17 14:57:44

软件介绍

本插件实现对xml文件的读写,此版本只实现对标准xml文档的标签,标签属性,标签值,预定义的实体引用进行处理。由C语言实现,较适合处理大型xml文档,处理速度较快。本插件遵循GPL协议。

术语

开始标签:xml中一个标签对的开始的标签。
结束标签:xml中一个标签对的结束的标签。
值内存池:专门用于存储值的内存。
行Buffer:存储读取xml文件一行内容的内存。
空白字符:本程序中只代表文本中的空格,tab键值两个非可见字符
标签名:略。
标签属性:略。
标签属性值:略。
标签值:略。
注:为叙述方便,下文中,标签名以key,标签属性以property,标签属性值以property_value,标签值以value表示。

文件

  • read_xml.h -- read_xml头文件

  • read_xml.c -- read_xml源码

  • ReadMe.md -- read_xml说明文档

  • xml.xml -- 示例xml文件

  • libread_xml.so -- 封装的linux动态库

  • read_xml.lib -- VisualStudio2015生成的windows编译动态库接口

  • read_xml.dll -- 封装的windows动态库

  • test.c --示例

处理限制

 1.文本限制

  • 单个标签自身(无论是开始标签还是结束标签)不能跨行。

  • xml文件头中xml版本和字符集信息中的空格不做处理。

  • 开始标签的第一个属性与标签名之间必须有一个或多个空白字符。

  • 值中间和结尾的空白字符键默认保留,而值开头的空白字符将被删除。

  • 标准的引用:< > & ' " 。一个引用之中不能有空白字符,否则做普通字符处理。

  • value与开始标签之间的空格或tab键值默认不存储为值的一部分,但值与结束标签之间的空格或tab键值默认作为值的一部分。

  • 不验证xml的合法性。虽然程序已经尽可能的提高容错性,但请使用者自行尽可能地保证所读写的xml符合规范,不规范的xml不保证能正确处理。

2.数值限制

  • 值内存池:5M——整个文档标签的值,每个值字符串附加一个'\0'字符。合计最大为5M。

  • 行Buffer大小:1024 byte。

  • 标签名:<=127 byte。

  • 属性名:<=63 byte。

  • 属性值:<=63 byte。

  • 标签值:理论上单个标签值的大小为值内存池大小,但也受行Buffer大小的限制。即值可以跨行,但该值的每一行字符数应<=1024个字符。

存储方法 

存储内容:标签名,属性名,属性值,值。
存储结构:伸展树,双向链表。

伸展树
存储xml内容,但不体现xml的从属结构。结点为KeyNode,以key检索元素。xml主体中所有同名标签下的所有property,property_value,value都以双向链表的形式存储在同一个KeyNode下的properties,values。
伸展树由静态全局变量LABEL_TREE管理,其中LABEL_TREE->root指向伸展树的根节点。

XML_LIST
不存储xml内容,但体现xml的从属结构。XML_LIST,以及XML_LIST中是一个双向链表,结点为XML,每个结点代表xml文本中的一个标签及其子标签整体,其子标签存储在child_list中,也是双向链表。XML_LIST自身并不存储任何xml元素,只引用自伸展树。
XML_LIST的头节点为静态全局变量XML_LIST。
此外,伸展树结点中的标签属性、值的链式存储也为双向链表。

关于存储结构的详细信息请参看read_xml.h文件。

使用方法

  • 源码编译
    源码中不涉及C99特征,因read_xml属于插件范畴,故read_xml以动态库的形式呈现,所以read_xml.c中并没有主函数,且原则上只对外提供非static修饰的函数。用户可自己编译,文档结构十分简单,只有一个.c文件和一个同名的.h文件。用户可自行对read_xml.h中的一些宏,主要是针对各种Buffer的大小进行配置。

  • 函数调用
    请参考read_xml.h文件对各个函数的说明。

本文地址:https://codercto.com/soft/d/14800.html

Spark SQL内核剖析

Spark SQL内核剖析

朱锋、张韶全、黄明 / 电子工业出版社 / 2018-8 / 69.00元

Spark SQL 是 Spark 技术体系中较有影响力的应用(Killer application),也是 SQL-on-Hadoop 解决方案 中举足轻重的产品。《Spark SQL内核剖析》由 11 章构成,从源码层面深入介绍 Spark SQL 内部实现机制,以及在实际业务场 景中的开发实践,其中包括 SQL 编译实现、逻辑计划的生成与优化、物理计划的生成与优化、Aggregation 算......一起来看看 《Spark SQL内核剖析》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具