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 stringstream 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 readablepreserve 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的更多相关文章

  1. 【Java规划】DOM XML Parser分解、遍历、创XML

    1.前言 DOM XML Parser简介 DOM 它是 W3C 处理 XML 规范 API,这是很多其他的 XML 地基处理相关标准,不仅是 Java,其他的,如 Javascript,PHP.MS ...

  2. PHP XML Parser

    安装 XML Parser 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP XML Parser 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP utf8 ...

  3. (转载)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 ...

  4. 雷林鹏分享:XML Parser

    XML Parser 所有现代浏览器都有内建的 XML 解析器. XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档 下面的 ...

  5. HTTP 响应实体主体:XML 及 XML parser

    本文内容 HTTP 响应实体主体:XML XML parser 总结 各编程语言实现的 XML parser   HTTP 响应实体主体:XML 实体主体(entity-body)通常是HTTP响应里 ...

  6. PHP的XML Parser(转)

    PHP处理XML文件 一.读取,更新(创建或者操作)一个XML文档,需要XML解析器 .有两种XML parsers: 1. Tree-based parser:将XML文档转化为DOM Tree结构 ...

  7. PHP XML Parser函数

    PHP XML Parser 函数 PHP XML Parser 简介 XML 函数允许您解析 XML 文档,但无法对其进行验证. XML 是一种用于标准结构化文档交换的数据格式.您可以在我们的 XM ...

  8. PHP XML Parser 函数

    PHP XML Parser 简介 XML 函数允许您解析 XML 文档,但无法对其进行验证. XML 是一种用于标准结构化文档交换的数据格式.您可以在我们的 XML 教程 中找到更多有关 XML 的 ...

  9. 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 ...

随机推荐

  1. shell中的变量与eval(转)

    原文链接:http://www.361way.com/shell-eval-variable/4957.html shell 中经常会用到变量的嵌套的情况.比如,单个或多个变量的值作为变量名,再对该变 ...

  2. TCP的状态兼谈Close_Wait和Time_Wait的状态

    原文链接: http://www.2cto.com/net/201208/147485.html TCP的状态兼谈Close_Wait和Time_Wait的状态   一 TCP的状态: 1).LIST ...

  3. PlantUML——1.Hello

    官网: http://www.plantuml.com/ 第一步: 下载 plantuml.jar文件: 第二步:创建一个demo.txt文件(与plantuml.jar在同一目录),内容如下: @s ...

  4. Linux下如何创建新用户

    Linux下如何创建新用户 Linux系统中,只有root用户有创建其他用户的权限.创建过程如下:   useradd -d /home/newuser newuser(设定了该用户的主目录和用户名) ...

  5. 看懂 MySQL 慢查询日志

    MySQL中的日志包括: 错误日志.二进制日志.通用查询日志.慢查询日志等等. 这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2) ...

  6. 两周撸一个掘金微信小程序

    利益相关 无 声明 这并不是掘金官方小程序(貌似没有搜到掘金 APP 对应的官方小程序),完全为第三者开发者开发,仅用于学习交流,禁止用于其他用途.若要使用官方正版,可访问掘金 官方网站,或下载掘金官 ...

  7. Redis实战(六)

    查询数据 1.使用Linq匹配关键字查询 using (var redisClient = RedisManager.GetClient()) { var user = redisClient.Get ...

  8. OOD沉思录 --- 类和对象的关系 --- 使用关系

    使用关系 对象A的方法MethodA使用了B的方法MethodB,则表示A对B存在使用关系 使用关系的最关键问题在于,A如何找到B,存在6种方案 方案一: A包含了B,B作为一个成员定义在A的类中,那 ...

  9. Python编程举例-装饰器

    装饰器的通常用途是扩展已定义好的函数的功能 一个浅显的装饰器编程例子 #装饰器函数 def outer(fun): def wrapper(): #添加新的功能 print('验证') fun() r ...

  10. Circular dependencies cannot exist in RelativeLayout

    循环布局错误!!! <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...