NativeXml: A native Delphi XML parser and writer
http://www.simdesign.nl/xml.html
This software component contains a small-footprint Object Pascal (Delphi) XML implementation that allows to read and write XML documents. You basically only need one unit and you can simply add it to the "uses" clause.
You can use this software to read XML documents from files, streams or strings. The load routine generates events that can be used to display load progress on the fly. You can also use it to create and save XML documents.
Features
- Read XML directly from string, stream or file with fast parser (1Mb/sec on 1.5GHz P3), writes to string, stream and file even faster.
- Import of all common tags, including comments, CDATA, XML declarations and stylesheets.
- Load from streaming media is supported; you can set up events to work with the node data while it comes in. See example 1. No need to keep the whole XML document in memory! Works well for huge documents. This is the SAX-like approach.
- Save to file, string or stream in readable, preserve or compact format. Readable format will add linefeeds and indents to make the file readable in a text editor. Compact format sticks to the Xml specification and adds minimal control characters. Preserve format keeps the markup of the document exactly as it was.
- Directly add blobs or streams in the XML file, they will be encoded as Binhex or Base64 (but you don't have to worry about that).
- Many native Delphi types can be stored directly to the nodes, making this code very suitable to use while writing storage methods.
Store and load boolean, single, double, word, integer, string, TFont, TColor, TPen, TBrush, TDateTime.
You don't have to worry about escaping the strings; this is done automatically. - Loads and saves ANSI, UTF-8 as well as Unicode (UTF-16) documents and implements proper conversion warnings. Recognises streams even without byte order marks. NativeXml works internally with UTF8 encoded strings to preserve extended characters, and supports widestrings.
- Unique feature: Store, read and create any TPersistent object to/from XML directly (see Example5). This is done by iterating through all of the objects' published properties by use of RTTI (runtime type information). This feature is only available for D5 and up.
- New! Now you can use the binary format of NativeXml. This avoids the expensive parsing process to get the textual xml data into the document (DOM). And even better, the binary file size is much smaller, ~50% of file size with uncompressed binary files, and ~15% of the file size in zlib-compressed files. And you can use AES encryption to keep your sensitive files safe from prying eyes.
The interface is the same whether textual xml or binary xml files are used, so you can work with binary files for speed and size purposes, then always send them to the public as normal xml files.
// TsdElementType enumerates the different kinds of elements that can be found
// in the XML document.
TsdElementType = (
xeElement, // normal element <name {attr}> [value] [sub-elements] </name> xeAttribute, // attribute ( name='value' or name="value") : <element name='value'>....</element>
xeCharData, // character data in a node : <element>char data</element>
xeComment, // comment <!--{comment}-->
xeCData, // literal data <![CDATA[{data}]]>
xeCondSection, // conditional section <![ IGNORE / INCLUDE [ markup ]]>
xeDeclaration, // xml declaration <?xml{declaration}?>
xeStylesheet, // stylesheet <?xml-stylesheet{stylesheet}?>
xeDocType, // doctype dtd declaration <!DOCTYPE{spec}>
xeDtdElement, // dtd element <!ELEMENT >
xeDtdAttList, // dtd attlist <!ATTLIST >
xeDtdEntity, // dtd entity <!ENTITY >
xeDtdNotation, // dtd notation <!NOTATION >
xeInstruction, // processing instruction <?...?>
xeWhiteSpace, // chardata with only whitespace
xeQuotedText, // quoted text: "bla" or 'bla'
xeEndTag, // </...> and signal function in binary xml
xeError // some error or unknown
);
TsdElementTypes = set of TsdElementType;
// End-Of-Line style
TsdEolStyle = (
esLF, // write End-Of-Line as just LF (#$0A) like normalised xml
esCRLF, // write End-Of-Line as CR + LF (#$0D + #$0A), for the windows platform
esCR // write End-Of-Line as CR (#$0D), for the mac platform
);
// Note on TNativeXml.XmlFormat:
// - xfCompact (default) to save the xml fully compliant and at smallest size
// - xfReadable writes additional nonsignificant whitespace so the client can easily read the xml file with a standard editor.
// - xfPreserve aims to preserve whitespace data just as it is parsed
TXmlFormatType = (
xfCompact, // Save without any control chars except LF after declaration
xfReadable, // Save in readable format with indents and end-of-lines
xfPreserve // Preserve whitespace whenever possible
);
{
NativeXmlNodes:
Parsing and writing methods for XML nodes:
Attribute, CDATA, CharData, Comment, Declaration, DocType, DTD-AttList, DTD-Element, DTD-Entity, DTD-Notation, Element, (processing) Instruction, QuotedText, StyleSheet and ancestors:
TXmlNode
TsdContainerNode
TsdElement
TsdDtdElement
TsdDtdAttList
TsdDtdEntity
TsdDtdNotation
TsdDocType
TsdDeclaration
TsdStyleSheet
TsdCharData
TsdQuotedText
TsdProcessingInstruction
TsdComment
TsdCData
TsdConditionalSection
TsdAttribute
}
NativeXml: A native Delphi XML parser and writer的更多相关文章
- 【Java规划】DOM XML Parser分解、遍历、创XML
1.前言 DOM XML Parser简介 DOM 它是 W3C 处理 XML 规范 API,这是很多其他的 XML 地基处理相关标准,不仅是 Java,其他的,如 Javascript,PHP.MS ...
- PHP XML Parser
安装 XML Parser 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP XML Parser 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP utf8 ...
- (转载)XML Tutorial for iOS: How To Choose The Best XML Parser for Your iPhone Project
There are a lot of options when it comes to parsing XML on the iPhone. The iPhone SDK comes with two ...
- 雷林鹏分享:XML Parser
XML Parser 所有现代浏览器都有内建的 XML 解析器. XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档 下面的 ...
- HTTP 响应实体主体:XML 及 XML parser
本文内容 HTTP 响应实体主体:XML XML parser 总结 各编程语言实现的 XML parser HTTP 响应实体主体:XML 实体主体(entity-body)通常是HTTP响应里 ...
- PHP的XML Parser(转)
PHP处理XML文件 一.读取,更新(创建或者操作)一个XML文档,需要XML解析器 .有两种XML parsers: 1. Tree-based parser:将XML文档转化为DOM Tree结构 ...
- PHP XML Parser函数
PHP XML Parser 函数 PHP XML Parser 简介 XML 函数允许您解析 XML 文档,但无法对其进行验证. XML 是一种用于标准结构化文档交换的数据格式.您可以在我们的 XM ...
- PHP XML Parser 函数
PHP XML Parser 简介 XML 函数允许您解析 XML 文档,但无法对其进行验证. XML 是一种用于标准结构化文档交换的数据格式.您可以在我们的 XML 教程 中找到更多有关 XML 的 ...
- XML Parser Errors See Details for more Information XML Parser Error on line 1: Document root ele
1.错误描写叙述 XML Parser Errors See Details for more Information XML Parser Error on line 1: Document roo ...
随机推荐
- alias命令别名
笔者在看<鸟哥私房菜>时,突然看到这个命令,之前未接触过,故简单记录学习下,具体的大家可参见man手册.功能说明:设置指令的别名.语 法:alias[别名]=[指令名称]参 数 :若不加任 ...
- Linux下软件的安装与管理
1.源码安装方式 2.RPM包方式安装 3.yum安装方式 4.二进制软件安装方式 1.源码安装方式 (1)下载.解压Apache源码: mkdir /apache #在根目录下创建一个apache目 ...
- fiddler添加监测请求的 ip地址
本文转载自:http://www.jackness.org/2014/12/26/%E7%BB%99fiddler%E6%B7%BB%E5%8A%A0%E7%9B%91%E6%B5%8B%E8%AF% ...
- Next Permutation——简单、经典
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- opencv的CMakeLists.txt与makefile写法
opencv的CMakeLists.txt cmake_minimum_required(VERSION 2.8) project(my_run_name) find_package(OpenCV R ...
- 包含Winsock2.h出错问题
工程中添加 Winsock2.h 报错 1>c:\program files (x86)\windows kits\8.1\include\shared\ws2def.h(100): warni ...
- ***关于WP的邮件无法发送问题的总结(原创)
1.用FTP打开 /wp-include/class-smtp.php ,最好是下载下来,搜索一下,查找到如下的代码: $this->smtp_conn = @stream_socket_cli ...
- pdb-不需要IDE也能调试
python中有个pdb模块,使python代码也可以像gdb那样进行调试,一般情况下pdb模块可以在代码内直接使用,也可以通过命令行参数的形式添加该模块进行调试(python -m pdb file ...
- APS高级计划排程系统应该支持的企业应用场景
APS高级计划排程系统应该支持的企业应用场景 面对工业4.0智能制造的挑战,很多企业希望能够引进APS高级计划排程系统,全自动的.快速的制定精细化的生产计划,准确的计算产线/设备上各种产品型号的加工顺 ...
- d2i_xxx出错
在生成DER编码是X509_ALGOR类型没有赋值导致,要先new,然后赋值. req_st->req.appKeyReq->appKeyType = X509_ALGOR_new(); ...