QXML更新-新增Remove/Detach/AttachTo/MoveTo函数

【更新内容】

1、新增Remove函数移除指定的子结点,与Delete的区别在于Remove并不会释放子结点,而只是将其从父结点中移除而已。

/// <summary>移除指定索引的结点</summary>
/// <param name="AIndex">要移除的结点索引</param>
/// <returns>返回被移除的结点</returns>
/// <remarks>
/// 1、如果指定索引的结点不存在,则抛出EOutRange异常
/// 2、被移除的结点需要用户自行释放
/// </remarks>
function Remove(AIndex: Integer): TQXMLNode; overload; virtual;
/// <summary>移除指定的子结点</summary>
/// <param name="AIndex">要移除的结点</param>
procedure Remove(ANode: TQXMLNode); overload;

2、新增Detach函数将自己从父结点中移除自身,相当于调用Parent.Remove(Self)

/// <summary>从当前XML父结点中分离当前结点</summary>
/// <remarks>分离后的结点需要单独释放</remarks>
procedure Detach;

3、新增AttachTo函数用于将自己做为最后一个子结点附加到指定的父结点,注意父结点的类型必需为xntNode

/// <summary>将当前结点附加到新的父结点上</summary>
/// <param name="AParent">要附加的目标结点</param>
/// <remarks>附加后的结点由父结点负责释放</remarks>
procedure AttachTo(AParent: TQXMLNode);

4、新增MoveTo函数将自己移动到指定的父结点下的指定位置,注意父结点的类型必需为xntNode

/// <summary>将当前结点移动的新的父结点的指定位置</summary>
/// <param name="ANewParent">新的父结点</param>
/// <param name="AIndex">新位置索引</param>
/// <remarks>如果新位置索引小于等于0,则插入到起始位置,如果大于父的已有结点数量,则插入到
/// 父结点末尾,否则添加到指定位置</remarks>
procedure MoveTo(ANewParent: TQXMLNode; AIndex: Integer);

 【更新级别】

建议更新

【特别感谢】

新心晨曦 提出需求建议

分享到: