专栏首页微卡智享Delphi使用NativeXml处理XML(三)

Delphi使用NativeXml处理XML(三)

正文

4.1.16.TxmlNode类

  TXmlNode = class(TPersistent)   该TXmlNode代表在XML文件中的元素。每个TNativeXml拥有一个根(Root)元素。在根元素下面,子元素可以嵌套(没有限制有多深)。ElementType属性定义这个节点是什么类型的元素。 4.1.16.1.AttributeByName   property AttributeByName [const AName: UTF8String]: UTF8String;   AttributeByName返回的指定属性名称AName的属性的值。设置AttributeByName可以添加这个属性到属性列表,或取代现有的属性。 4.1.16.2.AttributeByNameWide   property AttributeByNameWide [const AName: UTF8String]: UnicodeString;   AttributeByName返回的指定属性名称AName的属性的UnicodeString类型值。设置AttributeByName可以添加这个属性到属性列表,或取代现有的属性。 4.1.16.3.AttributeCount   property AttributeCount: integer;   返回当前节点的属性数量。 4.1.16.4.AttributeName   property AttributeName [Index: integer]: UTF8String;   根据索引(Index)读属性的名字。注意,属性索引是从0开始的,索引(Index)值从0到AttributeCount – 1。 4.1.16.5.AttributePair   property AttributePair [Index: integer]: UTF8String;   根据索引(Index)读属性的名字与值,这个返回的UTF8String字符串中的名字(Name)与值(Value)用TAB符号(#9)分割。 注:实际上是用等号(=)分割的。这个值中的转义字符(escape)没有转换。 4.1.16.6.AttributeValue   property AttributeValue [Index: integer]: UTF8String;   根据索引(Index)读这个属性,返回UTF8String类型的属性值;写这个属性,则设置UTF8String类型的属性值。 4.1.16.7.AttributeValueAsInteger   property AttributeValueAsInteger [Index: integer]: integer;   根据索引(Index)读这个属性,返回Integer类型的属性值,如果这个值不能转换,返回0;写这个属性,则设置Integer类型的属性值。 4.1.16.8.AttributeValueAsUnicodeString   property AttributeValueAsUnicodeString [Index: integer]: UnicodeString;   根据索引(Index)读这个属性,返回UnicodeString类型的属性值;写这个属性,则设置UnicodeString类型的属性值。 4.1.16.9.AttributeValueDirect   property AttributeValueDirect [Index: integer]: UTF8String;   设置或获取这个原始属性值,可以回避转义字符转换(escape)函数。你不能在这个值中设置&和引用(quote)Ansi字符,或者XML不支持的字符。 注:这个值中的转义(escape)字符不会被转换。 4.1.16.10.BinaryEncoding   property BinaryEncoding: TBinaryEncodingType;   BinaryEncoding 属性值用于返回或设置父文档(Parent Document)的BinaryEncoding 属性值。 4.1.16.11.BinaryString   property BinaryString: RawByteString;   使用BinaryString可以读写Base64编码格式的节点值。如果是标准的文本信息,不使用这个方法,而是ValueAsString。 4.1.16.12.CascadedName   property CascadedName: UTF8String;   这个属性返回当前节点的名字及索引,并级联递归上层节点到根节点。各节点信息利用下划线(_)分割。 注:很奇怪,根节点竟然有一个父节点,而且那个节点没有写入文件。这个属性会返回那个奇怪节点的索引0。 4.1.16.13.Document   property Document: TNativeXml;   这是一个指向NativeXml格式文档的指针,它也许指向空(Nil)。 4.1.16.14.ElementType   property ElementType: TXmlElementType;   ElementType用于描述节点的元素类型。 4.1.16.15.FullPath   property FullPath: UTF8String;   Fullpath 返回从根节点(Root)到当前节点的完整路径,例如: /Root/SubNode1/SubNode2/ThisNode 4.1.16.16.Name   property Name: UTF8String;   Name属性用于读写节点的名字。这个完整的名字也许包括命名空间。(Namespace:Name) 4.1.16.17.NodeCount   property NodeCount: integer;   NodeCount 是这个节点的子节点数。可以利用它遍历子节点,例如: with MyNode do for i := 0 to NodeCount - 1 do with Nodes[i] do ..processing here 4.1.16.18.Nodes   property Nodes [Index: integer]: TXmlNode;   使用Nodes可以连接到当前XML节点中以Index指定的子节点。注意这个列表从0开始,Index有效值从0到NodeCount – 1。 4.1.16.19.Parent   property Parent: TXmlNode;   Parent 指向当前XML节点的父节点。 4.1.16.20.Tag   property Tag: integer;   Tag是一个Integer类型值,开发者可以随意使用它。 Tag 不保存到XML中。 Tag 常常用于表明一个GUI 元素 。 4.1.16.21.TotalNodeCount   property TotalNodeCount: integer;   TotalNodeCount 用于表示子节点总数,包括子节点的子节点。使用它返回XML 文档的节点总数:   Total := MyDoc.RootNodes.TotalNodeCount; 4.1.16.22.TreeDepth   property TreeDepth: integer;   读 TreeDepth属性可以得到当前XML 节点的嵌套层次。根节点(Root)的TreeDepth属性为0。 4.1.16.23.ValueAsBool   property ValueAsBool: boolean;   读取ValueAsBool 属性,可以返回布尔(boolean)类型的节点值,如果无法转换,引发一个异常。设置 ValueAsBool 将转换布尔类型为UTF8String类型并写入到节点值中。参照ValueAsBoolDef函数。 4.1.16.24.ValueAsDateTime   property ValueAsDateTime: TDateTime;   ValueAsDateTime 返回日期时间 (TDateTime) 类型的节点值,如果无法转换,引发一个异常。设置ValueAsDateTime 将转换TDateTime类型为UTF8String类型并写入到节点值中。参照 ValueAsDateTimeDef函数。 4.1.16.25.ValueAsFloat   property ValueAsFloat: double;   ValueAsFloat返回浮点(float) 类型的节点值,如果无法转换,引发一个异常。 设置ValueAsFloat将转换float类型为UTF8String类型并写入到节点值中。参照 ValueAsFloatDef函数。 4.1.16.26.ValueAsInt64   property ValueAsInt64: int64;   ValueAsIn64返回64位整数(int64) 类型的节点值,如果无法转换,引发一个异常。 设置ValueAsIn64将转换int64类型为UTF8String类型并写入到节点值中。参照 ValueAsInt64Def函数。 4.1.16.27.ValueAsInteger   property ValueAsInteger: integer;   ValueAsInteger返回整型(integer) 类型的节点值,如果无法转换,引发一个异常。 设置ValueAsInteger将转换integer类型为UTF8String类型并写入到节点值中。参照 ValueAsIntegerDef函数。 4.1.16.28.ValueAsString   property ValueAsString: UTF8String;   ValueAsString 返回没有转义字符(escape)版本的ValueDirect。 ValueDirect中所有的转义字符都必须被编码转换(例如"&" 转换为"&")。ValueAsString总是解码返回原始格式,使用ValueAsString设置节点的文本值,所有转义字符被编码转换。 4.1.16.29.ValueAsUnicodeString   property ValueAsUnicodeString: UnicodeString;   ValueAsUnicodeString 返回UnicodeString格式的没有转义字符(escape)版本的ValueDirect。设置这个节点的文本值,需要将所有转义字符编码转换。 4.1.16.30.ValueDirect   property ValueDirect: UTF8String;   ValueDirect是从流里面解析的原始文本值。如果有多行文本,将在ValueDirect中用CR符号分割。 4.1.16.31.WriteOnDefault   property WriteOnDefault: boolean;   WriteOnDefault属性值用于返回或设置父文档(Parent Document)的WriteOnDefault 属性值。 4.1.16.32.Assign   procedure Assign(Source: TPersistent); override;   使用 Assign连接另一个节点。这个方法从源节点复制所有属性和子节点到当前节点。你可以连接一个TNativeXml文档到这个节点,TNativeXml对象的RootNodeList属性将被复制。 4.1.16.33.AttributeAdd   procedure AttributeAdd(const AName: UTF8String; AValue: integer); overload;   使用这个方法增加一个整型(integer)属性到这个节点。 4.1.16.34.AttributeAdd   procedure AttributeAdd(const AName: UTF8String; const AValue: UTF8String); overload;   使用这个方法增加一个字符型(string)属性到这个节点,该值为AValue。 4.1.16.35.AttributeDelete   procedure AttributeDelete(Index: integer);   使用这个方法删除列表中Index指定的属性,Index必须大等于0,并且小于AttributeCount。使用范围外的Index是无效的。 4.1.16.36.AttributeExchange   procedure AttributeExchange(Index1: integer; Index2: integer);   交换Index1和Index2指定索引的属性。 4.1.16.37.AttributeIndexByname   function AttributeIndexByname(const AName: UTF8String): integer;   使用这个方法,返回指定AName名称的属性索引。 4.1.16.38.AttributesClear   procedure AttributesClear; virtual;   清除当前节点的所有属性。 4.1.16.39.BufferLength   function BufferLength: integer; virtual;   返回缓冲中数据长度,他将对xbeBinHex或xbeBase64格式解码,如果BinaryEncoding属性是xbeSixBits,这个函数不能使用。未编码的数据长度取决于从编码数据的长度。xbeBinHex是无意义的,(只有一半的长度),使用xbeBase64更困难(必须使用填充字符)。 4.1.16.40.BufferRead   procedure BufferRead(var Buffer{$IFDEF CLR}: TBytes{$ENDIF}; Count: Integer); virtual;   使用这个方法从节点的缓冲中读取长度为Count的二进制数据。 4.1.16.41.BufferWrite   procedure BufferWrite(const Buffer{$IFDEF CLR}: TBytes{$ENDIF}; Count: Integer); virtual;   使用这个方法将长度为Count的二进制数据写入节点缓冲区。在最终的XML文档中,这个数据使用BinHex或Base64编码的文本。注意NativeXml仅支持最大2Gb数据文件,不能使用巨大的文件。这个二进制编码方法(转换二进制数据到文本)能选择BinaryEncoding属性,xbeBase64是最有效的,但是稍慢。总是使用同一种编码读写它。 4.1.16.42.Clear   procedure Clear; virtual;   清除当前XML节点的所有子节点和属性,包括名字和值。这个节点没有被删除,可以调用Delete代替他。 4.1.16.43.Create   constructor Create(ADocument: TNativeXml); virtual;   创建一个新对象,ADocument 必须是TNativeXml,他将获得这个新的节点。 4.1.16.44.CreateName   constructor CreateName(ADocument: TNativeXml; const AName: UTF8String); virtual;   创建一个新的节点对象,并设置名字为AName,ADocument必须为TNativeXml类型,并会得到这个新的节点。 4.1.16.45.CreateNameValue   constructor CreateNameValue(ADocument: TNativeXml; const AName: UTF8String; const AValue: UTF8String); virtual;   创建一个新的节点对象,并设置名字为AName,并且值为UTF8String类型的AValue。ADocument必须为TNativeXml类型,并会得到这个新的节点。 4.1.16.46.CreateType   constructor CreateType(ADocument: TNativeXml; AType: TXmlElementType); virtual;   创建一个新的节点对象,并且XML元素类型(TXmlElementType)为AType,ADocument必须为TNativeXml类型,并会得到这个新的节点。 4.1.16.47.Delete   procedure Delete; virtual;   调用Delete 从父节点列表中完整的删除这个节点。这个调用仅在这个节点有父节点的情况有效。根节点调用它无效。 4.1.16.48.DeleteEmptyNodes   procedure DeleteEmptyNodes;   删除所有空的节点(没有子节点、属性、值)。这个方法递归调用。 4.1.16.49.Destroy   destructor Destroy; override;   销毁当前节点对象。自动释放子节点。不要直接调用这个方法。当TNativeXml.Free时,文档中的所有TXmlNodes对象将递归调用这个方法。 4.1.16.50.FindNode   function FindNode(const NodeName: UTF8String): TXmlNode;   找到第一个名字为NodeName的节点,与NodeByName函数相反,这个函数将搜索完整的子节点树,使用DepthFirst方法。它也可以搜索全路径,例如   FoundNode := MyNode.FindNode('/Root/SubNode1/SubNode2/ThisNode'); 注:已经无法找到DepthFirst定义了,虽然在注释里面还能找到他的身影。当NodeName得第一个字符是“/”时,会按照全路径方式查找。 4.1.16.51.FindNodes   procedure FindNodes(const NodeName: UTF8String; const AList: TList);   查找名字为NodeName的所有节点,与NodeByName函数相反,这个函数将搜索完整的子节点树。对于你使用的AList列表参数,你不需要初始化他的Items。 4.1.16.52.FromAnsiString   function FromAnsiString(const s: AnsiString): UTF8String;   使用FromAnsiString转换一个标准ANSI字符串到UTF8String格式,比如节点的名字、值、属性。在TNativeXml中ANSI字符被编码为UTF8。 4.1.16.53.FromUnicodeString   function FromUnicodeString(const W: UnicodeString): UTF8String;   使用FromUnicodeString转换UnicodeString格式字符串到UTF8String 格式。 4.1.16.54.HasAttribute   function HasAttribute(const AName: UTF8String): boolean; virtual;   使用HasAttribute确定名称为AName的节点是否有属性。 4.1.16.55.IndexInParent   function IndexInParent: integer;   这个函数返回这个节点在父节点中的索引。如果父节点不存在,这个函数返回-1。 4.1.16.56.IsClear   function IsClear: boolean; virtual;   如果这个节点没有子节点、属性,并且名字和值为空,返回True。 4.1.16.57.IsEmpty   function IsEmpty: boolean; virtual;   如果这个节点没有子节点、属性,并且值为空,返回True。 4.1.16.58.IsEqualTo   function IsEqualTo(ANode: TXmlNode; Options: TXmlCompareOptions; MismatchNodes: TList): boolean; 4.1.16.59.NodeAdd   function NodeAdd(ANode: TXmlNode): integer; virtual;   增加ANode节点为当前节点子列表的一个新的子元素,这个节点将被增加到NodeCount这个位置,并且这个数值被返回。 4.1.16.60.NodeByAttributeValue   function NodeByAttributeValue(const NodeName: UTF8String; const AttribName: UTF8String; const AttribValue: UTF8String; ShouldRecurse: boolean): TXmlNode;   这个函数返回子节点中第一个节点名等于NodeName,并且名为AttribName属性的值为AttribValue的节点。如果ShouldRecurse为True(缺省),则函数自身递归。 4.1.16.61.NodeByElementType   function NodeByElementType(ElementType: TXmlElementType): TXmlNode;   返回第一个元素类型为Elementype的子节点,如果不存在则返回空(nil)。 4.1.16.62.NodeByName   function NodeByName(const AName: UTF8String): TXmlNode; virtual;   返回第一个名字为AName的子节点,如果没找到,则返回空(nil)。 4.1.16.63.NodeDelete   procedure NodeDelete(Index: integer); virtual;   删除索引为Index的子节点。这个子节点将被释放。 4.1.16.64.NodeExchange   procedure NodeExchange(Index1: integer; Index2: integer);   交换索引为Index1和Index2的子节点。 4.1.16.65.NodeExtract   function NodeExtract(ANode: TXmlNode): TXmlNode; virtual;   从子节点列表中提取ANode。该节点将不再出现在子节点列表中,因此应用程序将不再释放ANode。 4.1.16.66.NodeFindOrCreate   function NodeFindOrCreate(const AName: UTF8String): TXmlNode; virtual;   这个函数返回第一个名字是AName的节点指针。如果此节点没有找到,将创建一个新节点,并返回其指针。 4.1.16.67.NodeIndexByName   function NodeIndexByName(const AName: UTF8String): integer; virtual;   查找第一个名字是AName的节点索引。 4.1.16.68.NodeIndexByNameFrom   function NodeIndexByNameFrom(const AName: UTF8String; AFrom: integer): integer; virtual;   在索引为AFrom的后面查找名字为AName的第一个节点索引。此功能可在所有节点中用循环来检索特定名称,而无需使用辅助清单。另见NodesByName。 4.1.16.69.NodeIndexOf   function NodeIndexOf(ANode: TXmlNode): integer;   调用NodeIndexOf得到ANode在节点数组中的索引。数组中的第一个节点的索引为0,第二个节点索引为1,依此类推。如果一个节点不在列表中,NodeIndexOf返回-1。 4.1.16.70.NodeInsert   procedure NodeInsert(Index: integer; ANode: TXmlNode); virtual;   插入节点ANode到节点列表,并且设置索引为Index。 4.1.16.71.NodeNew   function NodeNew(const AName: UTF8String): TXmlNode; virtual;   创建一个名字为AName的新节点,并加入到子节点列表中,然后返回这个指针。 4.1.16.72.NodeNewAtIndex   function NodeNewAtIndex(Index: integer; const AName: UTF8String): TXmlNode; virtual;   创建一个名字为AName的新节点,并加入到子节点列表中索引为Index的位置上,然后返回这个指针。 4.1.16.73.NodeRemove   function NodeRemove(ANode: TXmlNode): integer;   若要从节点数组移除一个特定的节点时,调用NodeRemove,他的索引是未知的。返回的值是它被删除前在节点数组中的索引。一个节点被删除后,所有的节点都遵循它在索引位置移动,并且NodeCount会减一。 4.1.16.74.NodesByName   procedure NodesByName(const AName: UTF8String; const AList: TList);   使用此过程来获取名称为AName的所有节点。这些节点的指针被添加到列表AList中。调用这个过程之前AList必须初始化。您不需要清除这个列表。 4.1.16.75.NodesClear   procedure NodesClear; virtual;   清除(并且释放)完整的子节点列表。 4.1.16.76.ReadAttributeBool   function ReadAttributeBool(const AName: UTF8String; ADefault: boolean): boolean; virtual;   查找名字为AName的属性,并且转换值为布尔(boolean)类型,如果属性没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.77.ReadAttributeDateTime   function ReadAttributeDateTime(const AName: UTF8String; ADefault: TDateTime): TDateTime; virtual; 4.1.16.78.ReadAttributeFloat   function ReadAttributeFloat(const AName: UTF8String; ADefault: double): double;   查找名字为AName的属性,并且转换值为双精度浮点(double)类型,如果属性没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.79.ReadAttributeInt64   function ReadAttributeInt64(const AName: UTF8String; ADefault: int64): int64; virtual;   查找名字为AName的属性,并且转换值为64位整数(int64)类型,如果属性没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.80.ReadAttributeInteger   function ReadAttributeInteger(const AName: UTF8String; ADefault: integer): integer; virtual;   查找名字为AName的属性,并且转换值为整数(integer)类型,如果属性没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.81.ReadAttributeString   function ReadAttributeString(const AName: UTF8String; const ADefault: UTF8String): UTF8String; virtual; 4.1.16.82.ReadBool   function ReadBool(const AName: UTF8String; ADefault: boolean): boolean; virtual;   查找名字为AName的子节点,并且转换值为布尔(boolean)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.83.ReadBrush   procedure ReadBrush(const AName: UTF8String; ABrush: TBrush); virtual;   从名字为AName的子节点中读取Color和Style信息到TBrush类型的ABrush中。 4.1.16.84.ReadColor   function ReadColor(const AName: UTF8String; ADefault: TColor): TColor; virtual;   从名字为AName的子节点中读取值,并转换为颜色(TColor)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.85.ReadDateTime   function ReadDateTime(const AName: UTF8String; ADefault: TDateTime): TDateTime; virtual;   从名字为AName的子节点中读取值,并转换为日期时间(TDateTime)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.86.ReadFloat   function ReadFloat(const AName: UTF8String; ADefault: double): double; virtual;   从名字为AName的子节点中读取值,并转换为双精度浮点(double)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.87.ReadFont   procedure ReadFont(const AName: UTF8String; AFont: TFont); virtual;   从名字为AName的子节点中读取Color、Size和Style信息到TFont类型的AFont中。 4.1.16.88.ReadInt64   function ReadInt64(const AName: UTF8String; ADefault: int64): int64; virtual;   从名字为AName的子节点中读取并且转换值为64位整数(int64)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.89.ReadInteger   function ReadInteger(const AName: UTF8String; ADefault: integer): integer; virtual;   从名字为AName的子节点中读取并且转换值为整数(integer)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.90.ReadPen   procedure ReadPen(const AName: UTF8String; APen: TPen); virtual;   从名字为AName的子节点中读取Color、Mode和Style信息到TPen类型的APen中。 4.1.16.91.ReadString   function ReadString(const AName: UTF8String; const ADefault: UTF8String): UTF8String; virtual;   从名字为AName的子节点中读取并且转换值为UTF8字符串(UTF8String)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.92.ReadUnicodeString   function ReadUnicodeString(const AName: UTF8String; const ADefault: UnicodeString): UnicodeString; virtual;   从名字为AName的子节点中读取并且转换值为Unicode字符串(UnicodeString)类型,如果子节点没有找到,或者不能转换,返回缺省值ADefault。 4.1.16.93.SortChildNodes   procedure SortChildNodes(Compare: CompareFunction; Info: TPointer);   排序此节点的子节点。提供自定义的节点比较函数Compare,或者在父文档附加一个事件处理程序OnNodeCompare,以提供自定义排序。如果没有给出比较函数(nil),OnNodeCompare也没有定义,SortChildNodes只会按名称排序(升序,不区分大小写)子节点。指针参数的信息可以被用来传递任何自定义信息的比较功能。信息的默认值是空(nil)。 4.1.16.94.ToUnicodeString   function ToUnicodeString(const s: UTF8String): UnicodeString;   使用ToUnicodeString转换UTF8String格式字符串到UnicodeString 格式。 4.1.16.95.ValueAsBoolDef   function ValueAsBoolDef(ADefault: boolean): boolean; virtual;   转换节点值为布尔(boolean)类型,如果不能转换,或者值没有找到,返回缺省值ADefault。 4.1.16.96.ValueAsDateTimeDef   function ValueAsDateTimeDef(ADefault: TDateTime): TDateTime; virtual;   转换节点值为日期时间(TDateTime)类型,如果不能转换,或者值没有找到,返回缺省值ADefault。 4.1.16.97.ValueAsFloatDef   function ValueAsFloatDef(ADefault: double): double; virtual;   转换节点值为双精度浮点(double)类型,如果不能转换,或者值没有找到,返回缺省值ADefault。 4.1.16.98.ValueAsInt64Def   function ValueAsInt64Def(ADefault: int64): int64; virtual;   转换节点值为64位整数(int64)类型,如果不能转换,或者值没有找到,返回缺省值ADefault。 4.1.16.99.ValueAsIntegerDef   function ValueAsIntegerDef(ADefault: integer): integer; virtual;   转换节点值为整数(integer)类型,如果不能转换,或者值没有找到,返回缺省值ADefault。 4.1.16.100.WriteAttributeBool   procedure WriteAttributeBool(const AName: UTF8String; AValue: boolean; ADefault: boolean); virtual;   如果名称为AName的属性存在,那么将其值设置为布尔值AValue。如果它不存在,则创建一个名字为AName的新属性,并转换AValue为 “True”或“False”的布尔值。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加属性。 4.1.16.101.WriteAttributeDateTime   procedure WriteAttributeDateTime(const AName: UTF8string; AValue: TDateTime; ADefault: TDateTime); virtual; 4.1.16.102.WriteAttributeFloat   procedure WriteAttributeFloat(const AName: UTF8String; AValue: double; ADefault: double); virtual; 4.1.16.103.WriteAttributeInt64   procedure WriteAttributeInt64(const AName: UTF8String; const AValue: int64; ADefault: int64); virtual; 4.1.16.104.WriteAttributeInteger   procedure WriteAttributeInteger(const AName: UTF8String; AValue: integer; ADefault: integer); virtual;   如果名称为AName的属性存在,那么将其值设置为整数AValue。如果它不存在,则创建一个名字为AName的新属性,并转换AValue为字符串。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加属性。 4.1.16.105.WriteAttributeString   procedure WriteAttributeString(const AName: UTF8String; const AValue: UTF8String; const ADefault: UTF8String); virtual;   如果名称为AName的属性存在,那么将其值设置为UTF8字符串AValue。如果它不存在,则创建一个名字为AName的新属性,并写入AValue为UTF8字符串。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加属性。 4.1.16.106.WriteBool   procedure WriteBool(const AName: UTF8String; AValue: boolean; ADefault: boolean); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为布尔(boolean)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.16.107.WriteBrush   procedure WriteBrush(const AName: UTF8String; ABrush: TBrush); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为画刷(TBrush)类型AValue,包括Color和Style。如果名字为AName的子节点不存在,创建它。 4.1.16.108.WriteColor   procedure WriteColor(const AName: UTF8String; AValue: TColor; ADefault: TColor); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为颜色(TColor)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.16.109.WriteDateTime   procedure WriteDateTime(const AName: UTF8String; AValue: TDateTime; ADefault: TDateTime); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为日期时间(TDateTime)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。这个XML格式依照W3C的日期时间说明。 4.1.16.110.WriteFloat   procedure WriteFloat(const AName: UTF8String; AValue: double; ADefault: double); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为双精度浮点(double)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.16.111.WriteFont   procedure WriteFont(const AName: UTF8String; AFont: TFont); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为字体(TFont)类型AFont,包括Color、Size和Style。如果名字为AName的子节点不存在,创建它。 4.1.16.112.WriteHex   procedure WriteHex(const AName: UTF8String; AValue: integer; Digits: integer; ADefault: integer); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为16进制 (hexadecimal)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.16.113.WriteInt64   procedure WriteInt64(const AName: UTF8String; AValue: int64; ADefault: int64); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为16位整数(int64)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.16.114.WriteInteger   procedure WriteInteger(const AName: UTF8String; AValue: integer; ADefault: integer); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为整数(integer)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.16.115.WritePen   procedure WritePen(const AName: UTF8String; APen: TPen); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为画笔(TPen)类型APen,包括Color、Mode和Style。如果名字为AName的子节点不存在,创建它。 4.1.16.116.WriteString   procedure WriteString(const AName: UTF8String; const AValue: UTF8String; const ADefault: UTF8String); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为UTF8 字符串(UTF8String)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.16.117.WriteToString   function WriteToString: UTF8String; virtual;   调用WriteToString可以存储XML节点到UTF8 字符串(UTF8String)。该方法可用于存储单个节点,而不是完整的XML文档的。 4.1.16.118.WriteUnicodeString   procedure WriteUnicodeString(const AName: UTF8String; const AValue: UnicodeString; const ADefault: UnicodeString); virtual;   增加或替换名字为AName的子节点,增加或者设置它的值为Unicode字符串(UnicodeString)类型AValue。如果ADefault = AValue,并且WriteOnDefault = FALSE时,不添加子节点。 4.1.17.TXmlNodeList

  TXmlNodeList = class(TList)   TXmlNodeList是一个继承自TList的工具。   例子如下: procedure FindAllZips(ANode: TXmlNode); var i: integer; AList: TXmlNodeList; begin AList := TXmlNodeList.Create; try // Get a list of all nodes named 'ZIP' ANode.NodesByName('ZIP', AList); for i := 0 to AList.Count - 1 do // Write the value of the node to output. Since AList[i] will be // of type TXmlNode, we can directly access the Value property. WriteLn(AList[i].Value); finally AList.Free; end; end; 4.1.17.1.Items   property Items [Index: Integer]: TXmlNode; 4.1.17.2.ByAttribute   function ByAttribute(const AName: UTF8String; const AValue: UTF8String): TXmlNode;   返回属性名称为AName,并且属性值为AValue的第一个节点。


-END-

本文分享自微信公众号 - 微卡智享(VaccaeShare),作者:Vaccae

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++ OpenCV播放视频及调用摄像头显示

    前一篇我们介绍了 《C++ OpenCV摄像头及视频操作类VideoCapture介绍》,我们现在就针对这个类里的API进行DEMO的演示。

    Vaccae
  • 学习|Unity3D使用协程实现减速停车效果

    上一篇《学习|Unity3d的导航实现循环线路移动》讲了一下定制循环行驶路线的方法,在视频中还有一个就是非会员的车辆需要人工收费,所以就要有一个减速停车等待的动...

    Vaccae
  • C++ OpenCV基于距离变换与分水岭的图像分割

    图像分割,英文名image segmentation,就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键...

    Vaccae
  • 一文趣说 Code Review 与结对编程之优劣

    这篇文章的起因是在“敏捷中国史”交流群群里的一个争论,我希望能够通过这篇文章说明自己的一个观点:相对于结对编程,Code Review 是一种更加合理与普适性的...

    DevOps时代
  • kubeadm安装kubernetes V1.11.1 集群

    如果想要用二进制方法安装最新版本的Docker,可以参考我之前的文章在Redhat 7.3中采用离线方式安装Docker

    大江小浪
  • mysql乱码设置

    MySQL默认字符编码的设置 MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以UTF-8为例来说明  需...

    闵开慧
  • error handling in Nodejs

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    Jerry Wang
  • Python自动检测视频画面的旋转角度

    Python小屋屋主
  • Java生成艺术二维码也可以很简单

    现在二维码可以说非常常见了,当然我们见得多的一般是白底黑块,有的再中间加一个 logo,或者将二维码嵌在一张特定的背景中(比如微信、支付宝的收款码);偶尔也可能...

    一灰灰blog
  • 运营商如何用好大数据

    据IDC预测,从2005年到2020年,全球数据量将从130EB增长到40ZB。大数据时代已经到来,如何更好地发挥数据资产的价值,对电信运营商来说是一个崭新的...

    灯塔大数据

扫码关注云+社区

领取腾讯云代金券