linyawen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

4.2.函数(Functions)
4.2.1.ComponentCreateFromXmlFile
  unit NativeXmlObjectStorage
  function ComponentCreateFromXmlFile(const FileName: string; Owner: TComponent; const Name: string): TComponent;
  从文件名称为FileName的XML文件读取并创建组件。为了成功地从头开始创建组件,组件的类必须事先调用RegisterClass进行登记。添加到指定Owner组件的子组件列表。这通常是一个形式。指定Name作为创建的组件的新组件的名称。
  注:它调用ComponentCreateFromXmlStream实现。
4.2.2.ComponentCreateFromXmlNode
  function ComponentCreateFromXmlNode(ANode: TXmlNode; Owner: TComponent; const Name: string): TComponent;
  从TXmlNode类型的ANode节点读取并创建组件。为了成功地从头开始创建组件,组件的类必须事先调用RegisterClass进行登记。添加到指定Owner组件的子组件列表。这通常是一个形式。指定Name作为创建的组件的新组件的名称。
  注:它使用TsdXmlObjectReader类实现。
4.2.3.ComponentCreateFromXmlStream
  function ComponentCreateFromXmlStream(S: TStream; Owner: TComponent; const Name: string): TComponent;
  从XML流类型的S中读取并创建组件。为了成功地从头开始创建组件,组件的类必须事先调用RegisterClass进行登记。添加到指定Owner组件的子组件列表。这通常是一个形式。指定Name作为创建的组件的新组件的名称。
  注:它调用ComponentCreateFromXmlNode实现。
4.2.4.ComponentCreateFromXmlString
  function ComponentCreateFromXmlString(const Value: string; Owner: TComponent; const Name: string): TComponent;
  从XML字符串类型的Value中读取并创建组件。为了成功地从头开始创建组件,组件的类必须事先调用RegisterClass进行登记。添加到指定Owner组件的子组件列表。这通常是一个形式。指定Name作为创建的组件的新组件的名称。
  注:它调用ComponentCreateFromXmlStream实现。
4.2.5.ComponentSaveToXmlFile
  procedure ComponentSaveToXmlFile(AComponent: TComponent; const FileName: string; AParent: TComponent);
  存储组件AComponent所有公布的属性到名为FileName 的XML文件。指定AParent为了储存Parent正确的方法和事件参考。
  注:它调用ObjectSaveToXmlFile实现。
4.2.6.ComponentSaveToXmlNode
  procedure ComponentSaveToXmlNode(AComponent: TComponent; ANode: TXmlNode; AParent: TComponent);
  存储组件AComponent所有公布的属性到TXmlNode格式的ANode中。指定AParent为了储存Parent正确的方法和事件参考。
  注:它调用ObjectSaveToXmlNode实现。
4.2.7.ComponentSaveToXmlStream
  procedure ComponentSaveToXmlStream(AComponent: TComponent; S: TStream; AParent: TComponent);
  存储组件AComponent所有公布的属性到XML格式的流S中。指定AParent为了储存Parent正确的方法和事件参考。
  注:它调用ObjectSaveToXmlStream实现。
4.2.8.ComponentSaveToXmlString
  function ComponentSaveToXmlString(AComponent: TComponent; AParent: TComponent): string;
  存储组件AComponent所有公布的属性到XML格式的字符串中。指定AParent为了储存Parent正确的方法和事件参考。
  注:它调用ObjectSaveToXmlString实现。
4.2.9.DecodeBase64
  Unit NativeXml
  function DecodeBase64(const Source: UTF8String): RawByteString;
  解码BASE64的数据Source为二进制数据。该函数返回为UTF8String的二进制数据。使用TStringStream转换这些数据流。源UTF8String可能包含换行符和控制字符,这些符号将被忽略。
4.2.10.DecodeBinHex
  Unit NativeXml
  function DecodeBinHex(const Source: UTF8String): RawByteString;
  解码BinHex数据Source为二进制数据。该函数返回为UTF8String的二进制数据。使用TStringStream转换这些数据流。源UTF8String可能包含换行符和控制字符,这些符号将被忽略。
4.2.11.EncodeBase64
  Unit NativeXml
  function EncodeBase64(const Source: RawByteString): UTF8String;
  二进制数据Source编码为BASE64。该函数返回UTF8String格式的BASE64编码数据,没有任何换行符。
4.2.12.EncodeBinHex
  Unit NativeXml
  function EncodeBinHex(const Source: RawByteString): UTF8String;
  二进制数据Source编码为BINHEX。该函数返回UTF8String格式的BINHEX编码数据,没有任何换行符。
4.2.13.FormCreateFromXmlFile
  function FormCreateFromXmlFile(const FileName: string; Owner: TComponent; const Name: string): TForm;
  从文件名称为FileName的XML文件读取并创建窗体。为了成功地从头开始创建窗体,窗体的类必须事先调用RegisterClass进行登记。添加窗体到指定Owner的子组件列表。这通常是一个形式。指定Name作为创建的窗体的新窗体的名称。
  注:它调用FormCreateFromXmlStream实现。
4.2.14.FormCreateFromXmlStream
  function FormCreateFromXmlStream(S: TStream; Owner: TComponent; const Name: string): TForm;
  从XML流格式的S读取并创建窗体。为了成功地从头开始创建窗体,窗体的类必须事先调用RegisterClass进行登记。添加窗体到指定Owner的子组件列表。这通常是一个形式。指定Name作为创建的窗体的新窗体的名称。
  注:它调用ComponentCreateFromXmlNode实现。
4.2.15.FormCreateFromXmlString
  function FormCreateFromXmlString(const Value: string; Owner: TComponent; const Name: string): TForm;
  从XML字符串格式的Value读取并创建窗体。为了成功地从头开始创建窗体,窗体的类必须事先调用RegisterClass进行登记。添加窗体到指定Owner的子组件列表。这通常是一个形式。指定Name作为创建的窗体的新窗体的名称。
  注:它调用FormCreateFromXmlStream实现。
4.2.16.FormSaveToXmlFile
  procedure FormSaveToXmlFile(AForm: TForm; const FileName: string);
  存储窗体AForm到名为FileName 的XML文件。这个方法存储窗体上所有的子组件,因而可以作为窗体存储的一种方法。
  注:它调用ComponentSaveToXmlFile完成工作。
4.2.17.FormSaveToXmlStream
  procedure FormSaveToXmlStream(AForm: TForm; S: TStream);
  存储窗体AForm到XML流格式的S中。这个方法存储窗体上所有的子组件,因而可以作为窗体存储的一种方法。
  注:它调用ComponentSaveToXmlStream实现。
4.2.18.FormSaveToXmlString
  function FormSaveToXmlString(AForm: TForm): string;
  存储窗体AForm到XML字符串格式中。这个方法存储窗体上所有的子组件,因而可以作为窗体存储的一种方法。
  注:它调用ComponentSaveToXmlString实现。
4.2.19.ObjectLoadFromXmlFile
  procedure ObjectLoadFromXmlFile(AObject: TObject; const FileName: string; AParent: TComponent);
  从文件名称为FileName的XML文件读取并创建AObject,并装入他所有公布的属性。指定AParent为了解决Parent正确的方法和事件参考。
  注:它调用ObjectLoadFromXmlStream实现。
4.2.20.ObjectLoadFromXmlNode
  procedure ObjectLoadFromXmlNode(AObject: TObject; ANode: TXmlNode; AParent: TComponent);
  从TXmlNode格式的ANode中读取并创建AObject,并装入他所有公布的属性。指定AParent为了解决Parent正确的方法和事件参考。
  注:它使用TsdXmlObjectReader类实现。
4.2.21.ObjectLoadFromXmlStream
  procedure ObjectLoadFromXmlStream(AObject: TObject; S: TStream; AParent: TComponent);
  从XML流格式的S中读取并创建AObject,并装入他所有公布的属性。指定AParent为了解决Parent正确的方法和事件参考。
  注:它调用ObjectLoadFromXmlNode实现。
4.2.22.ObjectLoadFromXmlString
  procedure ObjectLoadFromXmlString(AObject: TObject; const Value: string; AParent: TComponent);
  从XML字符串格式的Value中读取并创建AObject,并装入他所有公布的属性。指定AParent为了解决Parent正确的方法和事件参考。
  注:它调用ObjectLoadFromXmlStream实现。
4.2.23.ObjectSaveToXmlFile
  procedure ObjectSaveToXmlFile(AObject: TObject; const FileName: string; AParent: TComponent);
存储AObject所有公布的属性到文件名称为FileName的XML文件。指定AParent为了解决Parent正确的方法和事件参考。
  注:它调用ObjectSaveToXmlStream实现。
4.2.24.ObjectSaveToXmlNode
  procedure ObjectSaveToXmlNode(AObject: TObject; ANode: TXmlNode; AParent: TComponent);
  存储AObject所有公布的属性到TXmlNode类型的的ANode中。指定AParent为了解决Parent正确的方法和事件参考。
  注:它使用TsdXmlObjectWriter类实现。
4.2.25.ObjectSaveToXmlStream
  procedure ObjectSaveToXmlStream(AObject: TObject; S: TStream; AParent: TComponent);
  存储AObject所有公布的属性到XML流格式的S中。指定AParent为了解决Parent正确的方法和事件参考。
  注:它调用ObjectSaveToXmlNode实现。
4.2.26.ObjectSaveToXmlString
  function ObjectSaveToXmlString(AObject: TObject; AParent: TComponent): string;
  存储AObject所有公布的属性到XML字符串格式的Value中。指定AParent为了解决Parent正确的方法和事件参考。
  注:它调用ObjectSaveToXmlStream实现。
4.2.27.sdAddControlChars
  Unit NativeXml
  function sdAddControlChars(const AValue: UTF8String; const Chars: UTF8String; Interval: integer): UTF8String;
  这个函数将在Interval间隔的字符后,反复向UTF8String类型的AValue区间增加控制字符Chars。
4.2.28.sdAnsiToUtf8
  Unit NativeXml
  function sdAnsiToUtf8(const S: AnsiString): UTF8String;
  转换一个AnsiString 类型字符串为一个UTF8编码字符串。
4.2.29.sdDateTimeFromString
  Unit NativeXml
  function sdDateTimeFromString(const ADate: UTF8String; UseLocalBias: Boolean): TDateTime;
  根据W3C日期/时间规范,转换UTF8String类型的ADate为日期时间(TDateTime)类型,可以在http://www.w3.org/TR/NOTE-datetime找到该规范。如果有一个转换错误,将引发异常。
4.2.30.sdDateTimeFromStringDefault
  Unit NativeXml
  function sdDateTimeFromStringDefault(const ADate: UTF8String; ADefault: TDateTime; UseLocalBias: Boolean): TDateTime;
  根据W3C日期/时间规范,转换UTF8String类型的ADate为日期时间(TDateTime)类型,可以在http://www.w3.org/TR/NOTE-datetime找到该规范。如果有一个转换错误,返回缺省值ADefault。
4.2.31.sdDateTimeToString
  Unit NativeXml
  function sdDateTimeToString(ADate: TDateTime; UseLocalBias: Boolean): UTF8String;
  根据W3C日期/时间规范,转换日期时间(TDateTime)类型的ADate为UTF8String类型,可以在http://www.w3.org/TR/NOTE-datetime找到该规范。
4.2.32.sdRemoveControlChars
  Unit NativeXml
  function sdRemoveControlChars(const AValue: UTF8String): UTF8String;
  这个函数从UTF8String类型的AValue中移除控制字符(Tab, CR, LF and Space)。
4.2.33.sdUnicodeToUtf8
  Unit NativeXml
  function sdUnicodeToUtf8(const W: UnicodeString): UTF8String;
  转换一个UnicodeString到UTF8编码字符串。
4.2.34.sdUpCase
  Unit NativeXml
  function sdUpCase(Ch: AnsiChar): AnsiChar;
  将字符转换为大写('a'..'z' 变为 'A'..'Z')。
4.2.35.sdUTF8EscapeString
  Unit NativeXml
  function sdUTF8EscapeString(const AValue: UTF8String): UTF8String;
  将AValue的所有转义字符转换成相应的字符串。
4.2.36.sdUTF8FindString
  Unit NativeXml
  function sdUTF8FindString(const SubString: UTF8String; const S: UTF8String; Start: integer; Close: integer; var APos: integer): boolean;
  在UTF8String格式的S中查找子字符串SubString,仅在Start和Close之间查找字符。如果找到,函数返回True。APos体现找到的第一个位置。
4.2.37.sdUTF8MatchString
  Unit NativeXml
  function sdUTF8MatchString(const SubString: UTF8String; const S: UTF8String; Start: integer): boolean;
  检查UTF8String格式的S中,Start位置是否有子字符串SubString。
4.2.38.sdUTF8ParseAttributes
  Unit NativeXml
  procedure sdUTF8ParseAttributes(const AValue: UTF8String; Start: integer; Close: integer; Attributes: TsdUTF8StringList);
  在UTF8String格式的AValue中查找所有Name =“Value”片段(从Start到Close – 1),并把所产生的属性写入StringList中。调用这个函数前这StringList必须已初始化。
4.2.39.sdUTF8QuotedString
  Unit NativeXml
  function sdUTF8QuotedString(const AValue: UTF8String): UTF8String;
  用引号将字符串AValue括起来。
4.2.40.sdUTF8StringReplace
  Unit NativeXml
  function sdUTF8StringReplace(const S: UTF8String; const OldPattern: UTF8String; const NewPattern: UTF8String): UTF8String;
4.2.41.sdUtf8ToAnsi
  Unit NativeXml
  function sdUtf8ToAnsi(const S: UTF8String): AnsiString;
  UTF8编码的字符串转换为AnsiString类型。可能会导致损失!

4.2.42.sdUtf8ToUnicode
  Unit NativeXml
  function sdUtf8ToUnicode(const S: UTF8String): UnicodeString;
  转换一个UTF8编码字符串到UnicodeString。
4.2.43.sdUTF8Trim
  Unit NativeXml
  function sdUTF8Trim(const AValue: UTF8String): UTF8String;
  修剪UTF8String类型字符串AValue两端的控制字符(Tab、LF、CR、Space)。
4.2.44.sdUTF8TrimPos
  Unit NativeXml
  function sdUTF8TrimPos(const AValue: UTF8String; var Start: integer; var Close: integer): boolean;
  在Start和Close - 1之间修剪UTF8String字符串AValue(删除Start和Close – 1之间空格)。如果结果UTF8String仍然有一个长度> 0,函数返回True。
4.2.45.sdUTF8UnEscapeString
  Unit NativeXml
  function sdUTF8UnEscapeString(const AValue: UTF8String): UTF8String;
  替换字符串AValue中所有转义的原始字符。这些字符包括&#...;和&#x..;
4.2.46.sdUTF8UnQuotedString
  Unit NativeXml
  function sdUTF8UnQuotedString(const AValue: UTF8String): UTF8String;
  从字符串AValue 中移除引号。
4.2.47.sdUTF8WriteStringToStream
  Unit NativeXml
  procedure sdUTF8WriteStringToStream(S: TStream; const AString: UTF8String);
  写一个UTF8String字符串到流S。
4.2.48.sdWriteNumber
  Unit NativeXml
  function sdWriteNumber(Value: double; SignificantDigits: integer; AllowScientific: boolean): UTF8String;
  转换一个数值到一个UTF8String字符串,使用SignificantDigits来表示有效位数,如果想要更短的结果,设置AllowScientific允许使用科学记数法。
4.2.49.XmlAppendToExistingFile
  Unit: NativeXmlAppend
  procedure XmlAppendToExistingFile(const AFilename: string; ANode: TXmlNode; ALevel: integer {$IFDEF D4UP});
  有了这个程序,我们可以添加一个节点(TXmlNode)到现有的XML文件。该文件将不会被完整读入,其数据将只是在最后追加。为了做到这一点,该文件是从最终扫描,找到最后的位于ALevel层次的节点。 ALevel = 0将添加在最后的新节点。这是不明智的,因为XML不允许多个根节点。选择ALevel = 1添加在根目录下(默认)第1级的新节点。
  提示:如果你想开始一个空的(模板)XmlDocument中,一定要保存它之前设置TsdXmlDocument.UseFullNodes为True。这将确保在根节点上正确增加。
  注1:此方法不适用于Unicode文件。
4.3.类型(Types)
4.3.1.PBigByteArray
  Unit NativeXml
  PBigByteArray = ^TBigByteArray;
4.3.2.PUnicodeChar
  Unit NativeXml
  PUnicodeChar = PWideChar;
4.3.3.RawByteString
  Unit NativeXml
  RawByteString = AnsiString;
4.3.4.TBigByteArray
  Unit NativeXml
  TBigByteArray = array[0..MaxInt - 1] of byte;
  TBigByteArray是一个类似标准TByteArray(Windows单元),但它可以包含多达到maxInt个字节数组。当工作与缓冲区大于32768个字节,有助于避免这种类型范围检查错误。
4.3.5.TBinaryEncodingType
  Unit NativeXml
  TBinaryEncodingType = (xbeBinHex, xbeBase64);
  调用TXmlNode的BufferRead和BufferWrite时,使用TBinaryEncodingType选择采样什么样的二进制编码。
4.3.6.TBytes
  Unit NativeXml
  TBytes = TBigByteArray;
4.3.7.TPointer
  Unit NativeXml
  TPointer = Pointer;
4.3.8.TsdStreamModeType
  Unit NativeXml
  TsdStreamModeType = (umUnknown, umRead, umWrite);
  此枚举定义转换流访问模式。
4.3.9.TStringEncodingType
  Unit NativeXml
  TStringEncodingType = (seAnsi, seUCS4BE, seUCS4LE, seUCS4_2143, seUCS4_3412, se16BitBE, se16BitLE, seUTF8, seUTF16BE, seUTF16LE, seEBCDIC);
  定义的字符串的编码方式。
4.3.10.TXmlCompareOption
  Unit NativeXml
  TXmlCompareOption = (xcNodeName, xcNodeType, xcNodeValue, xcAttribCount, xcAttribNames, xcAttribValues, xcChildCount, xcChildNames, xcChildValues, xcRecursive);
4.3.11.TXmlCompareOptions
  Unit NativeXml
  TXmlCompareOptions = set of TXmlCompareOption;
4.3.12.TXmlElementType
  Unit NativeXml
  TXmlElementType = (xeNormal, xeComment, xeCData, xeDeclaration, xeStylesheet, xeDoctype, xeElement, xeAttList, xeEntity, xeNotation, xeExclam, xeQuestion, xeCharData, xeUnknown);
  TXmlElementType列举了可以在XML文档中元素的不同类型。
4.3.13.TXmlFormatType
  Unit NativeXml
  TXmlFormatType = (xfReadable, xfCompact);
  TNativeXml.Format说明:
  xfReadable(默认)能够用标准的编辑器读取的xml文件。
  xfCompact来保存XML完全兼容和最小尺寸。
4.3.14.TXmlNodeCompareEvent
  Unit NativeXml
  TXmlNodeCompareEvent = function (Sender: TObject; Node1, Node2: TXmlNode; Info: TPointer): integer of object;
  此事件是用在TNativeXml.OnNodeCompare事件,如果Node1 < Node2应返回-1,如果Node1 = Node2应返回0,如果Node1 > Node2应返回1。
4.3.15.TXMLNodeCompareFunction
  Unit NativeXml
  TXMLNodeCompareFunction = function (Node1, Node2: TXmlNode; Info: TPointer): integer;
  通过TXmlNode.SortChildNodes调用的函数。如果Node1 < Node2应返回-1,如果Node1 = Node2应返回0,如果Node1 > Node2应返回1。
4.3.16.TXmlNodeEvent
  Unit NativeXml
  TXmlNodeEvent = procedure (Sender: TObject; Node: TXmlNode) of object;
  一个基于对象的TXmlNode节点为基础的事件。
4.3.17.TXmlProgressEvent
  Unit NativeXml
  TXmlProgressEvent = procedure (Sender: TObject; Size: integer) of object;
  一个被用来表示加载或保存进度事件。
4.3.18.UnicodeChar
  Unit NativeXml
  UnicodeChar = WideChar;
4.3.19.UnicodeString
  Unit NativeXml
  UnicodeString = WideString;
4.3.20.ustring
  Unit NativeXmlAppend
  ustring = UTF8String;
4.4.变量(Variables)
  Unit NativeXml;
  cDefaultBinaryEncoding: TBinaryEncodingType  = xbeBase64;
  cDefaultDropCommentsOnParse: boolean  = False;
  cDefaultEncodingString: UTF8String  = 'UTF-8';
  cDefaultExternalEncoding: TStringEncodingType  = seUTF8;
  cDefaultFloatAllowScientific: boolean  = True;
  cDefaultFloatSignificantDigits: integer  = 6;
  cDefaultIndentString: UTF8String  = '  ';
  cDefaultUseFullNodes: boolean  = False;
  cDefaultUseLocalBias: boolean  = False;
  cDefaultVersionString: UTF8String  = '1.0';
  cDefaultWriteOnDefault: boolean  = True;
  cDefaultXmlFormat: TXmlFormatType  = xfCompact;
4.5.常量(Constants)
4.5.1.Unit: NativeXml
  cBase64Char: array[0..63] of AnsiChar  =
  'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  这些Ansi符号用于从数据缓冲区生成BASE64字符时使用。
  cBase64PadChar: AnsiChar  = '=';

  cBomInfoCount = 15;
  cBomInfo: array[0..cBomInfoCount - 1] of TBomInfo  =
   ( (BOM: ($00,$00,$FE,$FF); Len: 4; Encoding: seUCS4BE; HasBOM: true),
    (BOM: ($FF,$FE,$00,$00); Len: 4; Encoding: seUCS4LE; HasBOM: true),
    (BOM: ($00,$00,$FF,$FE); Len: 4; Encoding: seUCS4_2143; HasBOM: true),
    (BOM: ($FE,$FF,$00,$00); Len: 4; Encoding: seUCS4_3412; HasBOM: true),
    (BOM: ($FE,$FF,$00,$00); Len: 2; Encoding: seUTF16BE; HasBOM: true),
    (BOM: ($FF,$FE,$00,$00); Len: 2; Encoding: seUTF16LE; HasBOM: true),
    (BOM: ($EF,$BB,$BF,$00); Len: 3; Encoding: seUTF8; HasBOM: true),
    (BOM: ($00,$00,$00,$3C); Len: 4; Encoding: seUCS4BE; HasBOM: false),
    (BOM: ($3C,$00,$00,$00); Len: 4; Encoding: seUCS4LE; HasBOM: false),
    (BOM: ($00,$00,$3C,$00); Len: 4; Encoding: seUCS4_2143; HasBOM: false),
    (BOM: ($00,$3C,$00,$00); Len: 4; Encoding: seUCS4_3412; HasBOM: false),
    (BOM: ($00,$3C,$00,$3F); Len: 4; Encoding: seUTF16BE; HasBOM: false),
    (BOM: ($3C,$00,$3F,$00); Len: 4; Encoding: seUTF16LE; HasBOM: false),
    (BOM: ($3C,$3F,$78,$6D); Len: 4; Encoding: seAnsi; HasBOM: false),
    (BOM: ($4C,$6F,$A7,$94); Len: 4; Encoding: seEBCDIC; HasBOM: false) );

  cControlChars: set of AnsiChar  = [#9, #10, #13, #32];
  Tab, LF, CR, Space

  cEscapeCount = 5;
  不同的转义字符数
  cEscapes: array[0..cEscapeCount - 1] of UTF8String  = ('&', '<', '>', '''', '"');
  这些都是必须转义字符。
  cHexChar: array[0..15] of AnsiChar  = '0123456789ABCDEF';
  这些常数用于从数据缓冲区生成hex字符
  cHexCharLoCase: array[0..15] of AnsiChar  = '0123456789abcdef';

  cMaxBufferSize = $10000;
  65536字节的缓冲区
  cNativeXmlVersion = '3.10';
  NativeXml单元的当前版本
  cNodeValueBuf = 2048;
  在每个值的缓冲区增加分配的字节数
  cQuoteChars: set of AnsiChar  = ['"', ''''];

  cReplaces: array[0..cEscapeCount - 1] of UTF8String  = ('&amp;', '&lt;', '&gt;', '&apos;', '&quot;');
  这些字符串替换转义字符 - 相同的顺序
  cTags: array[0..cTagCount - 1] of TTagType  = ( (FClose: '>]]'; FStart: '[ATADC[!<'), (FClose: '>--'; FStart: '--!<'), (FClose: '>?'; FStart: '?<'), (FClose: '>'; FStart: '<') );

  sxeCannotConverToBool = 'Cannot convert value to bool';
  sxeCannotConvertToFloat = 'Cannot convert value to float';
  sxeDeclarationMustBeFirstElem = 'Xml declaration must be first element';
  sxeDoctypeAfterRootElement = 'Doctype declaration found after root element';
  sxeIllegalElementType = 'Illegal element type';
  sxeMoreThanOneDeclaration = 'More than one xml declaration found in xml';
  sxeMoreThanOneDoctype = 'More than one doctype declaration found in root';
  sxeSignificantDigitsOutOfRange = 'Significant digits out of range';
  sxeXmlNodeNotAssigned = 'XML Node is not assigned';

  xcAll: TXmlCompareOptions  = [xcNodeName, xcNodeType, xcNodeValue, xcAttribCount, xcAttribNames, xcAttribValues, xcChildCount, xcChildNames, xcChildValues, xcRecursive];
4.5.2.Unit:NativeXmlObjectStorage
  sxrInvalidPropertyValue = 'Invalid property value';
  sxrUnregisteredClassType = 'Unregistered classtype encountered in ';
  sxwIllegalVarType = 'Illegal variant type';
  sxwInvalidMethodName = 'Invalid method name';
4.6.单元
4.6.1.NativeXml.pas
  unit NativeXml
  这是执行读取和写入XML文档的一个小巧的Delpi代码。
  您可以使用此代码从文件、流或字符串中读取XML文档,。在装载过程中,产生可用于显示加载进度的事件。
  注:任何外部编码(ANSI,UTF16等)转换为一个内部编码是ANSI或UTF8。当加载的文档基于ANSI,将是ANSI编码,在其他情况下(使用UTF8,UTF16)的编码将是UTF8。
  原作者:Nils Haeck硕士(n.haeck @ simdesign.nl)原稿日期:2003年4月1日

  

  版本
  见下文版权所有(c)2003-2010 Simdesign BV的贡献者(补):斯特凡Glienke
  首先在所附LICENSE.txt许可条件下,它不允许在任何情况下出版或复制这个代码!

  该软件是基于一个分布式“AS IS”,没有任何明示或暗示的保证。
  有关详细信息,请访问http://www.simdesign.nl/xml.html
4.6.1.1.类(Classes)
  TNativeXml
  TsdBufferedReadStream
  TsdBufferedStream
  TsdBufferedWriteStream
  TsdCodecStream
  TsdStringBuilder
  TsdSurplusReader
  TsdUtf8Stream
  TsdUTF8StringList
  TsdUTF8StringStream
  TXmlNode
  TXmlNodeList
4.6.1.2.函数(Functions)
  DecodeBase64
  DecodeBinHex
  EncodeBase64
  EncodeBinHex
  sdAddControlChars
  sdAnsiToUtf8
  sdDateTimeFromString
  sdDateTimeFromStringDefault
  sdDateTimeToString
  sdRemoveControlChars
  sdUnicodeToUtf8
  sdUpCase
  sdUTF8EscapeString
  sdUTF8FindString
  sdUTF8MatchString
  sdUTF8ParseAttributes
  sdUTF8QuotedString
  sdUTF8StringReplace
  sdUtf8ToAnsi
  sdUtf8ToUnicode
  sdUTF8Trim
  sdUTF8TrimPos
  sdUTF8UnEscapeString
  sdUTF8UnQuotedString
  sdUTF8WriteStringToStream
  sdWriteNumber
4.6.1.3.类型(Types)
  PBigByteArray
  PUnicodeChar
  RawByteString
  TBigByteArray
  TBinaryEncodingType
  TBytes
  TPointer
  TsdStreamModeType
  TStringEncodingType
  TXmlCompareOption
  TXmlCompareOptions
  TXmlElementType
  TXmlFormatType
  TXmlNodeCompareEvent
  TXMLNodeCompareFunction
  TXmlNodeEvent
  TXmlProgressEvent
  UnicodeChar
  UnicodeString
4.6.1.4.变量(Variables)
  cDefaultBinaryEncoding
  cDefaultDropCommentsOnParse
  cDefaultEncodingString
  cDefaultExternalEncoding
  cDefaultFloatAllowScientific
  cDefaultFloatSignificantDigits
  cDefaultIndentString
  cDefaultUseFullNodes
  cDefaultUseLocalBias
  cDefaultVersionString
  cDefaultWriteOnDefault
  cDefaultXmlFormat
4.6.1.5.常量(Constants)
  cBase64Char
  cBase64PadChar
  cBomInfo
  cBomInfoCount
  cControlChars
  cEscapeCount
  cEscapes
  cHexChar
  cHexCharLoCase
  cMaxBufferSize
  cNativeXmlVersion
  cNodeValueBuf
  cQuoteChars
  cReplaces
  cTags
  sxeCannotConverToBool
  sxeCannotConvertToFloat
  sxeDeclarationMustBeFirstElem
  sxeDoctypeAfterRootElement
  sxeIllegalElementType
  sxeMoreThanOneDeclaration
  sxeMoreThanOneDoctype
  sxeSignificantDigitsOutOfRange
  sxeXmlNodeNotAssigned
  xcAll
4.6.2.NativeXmlAppend.pas
  Unit NativeXmlAppend
  本机实现了一个方法,将XML片段到现有XML文件的结尾。该文件永远不会完全加载到内存中,新的数据将在文件尾部追加。
  这种单元需要NativeXml。
  可能的例外(除了定期进行文件访问的):
   “开始阅读逆向流”:S中提供的文件不是一个XML文件,或者它是一个XML文件,但是没有足够的层次。该XML文件应该在其ALevel元素后至少含有一个标签。该算法通过完整的文件,并从开始之际抵达没有找到一个合适的位置插入节点数据。
   “层次无法找到”这将引发异常当最后一个元素不包含足够的层次,因此算法遇到一个开放的标记,其中它期望一个结束标记。
4.6.2.1.例子 1
  我们试图在这个XML文件中加入3级节点< Root><Level1> <Level2> </Level2> </Level1> <Level1> < -- 这个最后一个节点没有2级,所以该算法</Level1>不知道从哪里加3级的数据到2级下</ Root >
  看一个实现例子4

  原作者:Nils Haeck硕士,版权所有(c)2003-2009 Simdesign B.V.
  首先在所附LICENSE.txt许可条件下,它不允许在任何情况下出版或复制这个代码!
  该软件是基于一个分布式“AS IS”,没有任何明示或暗示的保证。
  有关详细信息,请访问http://www.simdesign.nl/xml.html
4.6.2.2.函数(Functions)
  XmlAppendToExistingFile
4.6.2.3.类型(Types)
  ustring

posted on 2011-01-04 17:47  linyawen  阅读(746)  评论(0编辑  收藏  举报