前言
我们接着上文的《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-
长按下方二维码关注微卡智享