zoukankan      html  css  js  c++  java
  • NativeXml帮助(四) http://gaoyanan.blog.sohu.com/162725319.html

    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

  • 相关阅读:
    判断闰年
    CaesarCode
    substring
    configure: error: Cannot use an external APR with the bundled APR-util
    字符串处理487-3279
    git分支管理
    git解决冲突
    git 分支的创建和切换
    nginx与php-fpm原理
    git 远程仓库与本地项目关联
  • 原文地址:https://www.cnblogs.com/linyawen/p/1925717.html
Copyright © 2011-2022 走看看