acl  3.5.3.0
acl::xml_node类 参考abstract

#include <xml.hpp>

+ 类 acl::xml_node 继承关系图:
+ acl::xml_node 的协作图:

Public 成员函数

virtual const char * tag_name (void) const =0
 
virtual const char * id (void) const =0
 
virtual const char * text (void) const =0
 
virtual const char * attr_value (const char *name) const =0
 
const char * operator[] (const char *name) const
 
virtual const xml_attrfirst_attr (void) const =0
 
virtual const xml_attrnext_attr (void) const =0
 
virtual xml_nodeadd_attr (const char *name, const char *value)=0
 
xml_nodeadd_attr (const char *name, char n)
 
xml_nodeadd_attr (const char *name, int n)
 
xml_nodeadd_attr (const char *name, size_t n)
 
xml_nodeadd_attr (const char *name, long long int n)
 
virtual xml_nodeset_text (const char *str, bool append=false)=0
 
virtual xml_nodeset_text (istream &in, size_t off=0, size_t len=0)=0
 
xml_nodeset_text (long long int number)
 
virtual xml_nodeadd_child (xml_node *child, bool return_child=false)=0
 
xml_nodeadd_child (xml_node &child, bool return_child=false)
 
xml_nodeadd_child (const char *tag, bool return_child=false, const char *str=NULL)
 
xml_nodeadd_child (const char *tag, const char *txt, bool return_child=false)
 
xml_nodeadd_child (const char *tag, long long int number, bool return_child=false)
 
xml_nodeadd_child (const char *tag, istream &in, size_t off=0, size_t len=0, bool return_child=false)
 
virtual xml_nodeget_parent (void) const =0
 
virtual xml_nodeset_parent (xml_node *node)=0
 
virtual int detach (void)=0
 
virtual xml_nodefirst_child (void)=0
 
virtual xml_nodenext_child (void)=0
 
virtual int depth (void) const =0
 
virtual bool is_root (void) const =0
 
virtual int children_count (void) const =0
 
void clear (void)
 
xmlget_xml (void) const
 
- Public 成员函数 继承自 acl::dbuf_obj
 dbuf_obj (dbuf_guard *guard=NULL)
 
virtual ~dbuf_obj ()
 
int pos () const
 
dbuf_guardget_guard () const
 

Protected 成员函数

 xml_node (xml *xml_ptr)
 
virtual ~xml_node (void)
 

Protected 属性

xmlxml_
 
std::vector< xml_node * > nodes_tmp_
 
std::vector< xml_attr * > attrs_tmp_
 

友元

class xml
 
class dbuf_guard
 

详细描述

在文件 xml.hpp51 行定义.

构造及析构函数说明

◆ xml_node()

acl::xml_node::xml_node ( xml xml_ptr)
protected

xml 节点构造函数

参数
xml_ptr{xml*} xml 树对象,非空

◆ ~xml_node()

virtual acl::xml_node::~xml_node ( void  )
protectedvirtual

要求该对象必须是动态创建的

成员函数说明

◆ add_attr() [1/5]

virtual xml_node& acl::xml_node::add_attr ( const char *  name,
const char *  value 
)
pure virtual

添加 XML 节点属性

参数
name{const char*} 属性名
value{const char*} 属性值
返回
{xml_node&}

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ add_attr() [2/5]

xml_node& acl::xml_node::add_attr ( const char *  name,
char  n 
)

添加 XML 节点属性

参数
name{const char*} 属性名
n{char} 属性值
返回
{xml_node&}

◆ add_attr() [3/5]

xml_node& acl::xml_node::add_attr ( const char *  name,
int  n 
)

添加 XML 节点属性

参数
name{const char*} 属性名
n{int} 属性值
返回
{xml_node&}

◆ add_attr() [4/5]

xml_node& acl::xml_node::add_attr ( const char *  name,
size_t  n 
)

添加 XML 节点属性

参数
name{const char*} 属性名
n{size_t} 属性值
返回
{xml_node&}

◆ add_attr() [5/5]

xml_node& acl::xml_node::add_attr ( const char *  name,
long long int  n 
)

添加 XML 节点属性

参数
name{const char*} 属性名
n{acl_int64} 属性值
返回
{xml_node&}

◆ add_child() [1/6]

virtual xml_node& acl::xml_node::add_child ( xml_node child,
bool  return_child = false 
)
pure virtual

给本 xml 节点添加 xml_node 子节点对象

参数
child{xml_node*} 子节点对象
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{xml_node&} return_child 为 true 返回子节点的引用, 否则返回本 xml 节点引用

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ add_child() [2/6]

xml_node& acl::xml_node::add_child ( xml_node child,
bool  return_child = false 
)

给本 xml 节点添加 xml_node 子节点对象

参数
child{xml_node&} 子节点对象
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{xml_node&} return_child 为 true 返回子节点的引用, 否则返回本 xml 节点引用

◆ add_child() [3/6]

xml_node& acl::xml_node::add_child ( const char *  tag,
bool  return_child = false,
const char *  str = NULL 
)

给本 xml 节点添加 xml_node 子节点对象

参数
tag{const char* tag} 子节点对象的标签名
return_child{bool} 是否需要本函数返回新创建的子节点的引用
str{const char*} 文本字符串
返回
{xml_node&} return_child 为 true 返回子节点的引用, 否则返回本 xml 节点引用

◆ add_child() [4/6]

xml_node& acl::xml_node::add_child ( const char *  tag,
const char *  txt,
bool  return_child = false 
)

给本 xml 节点添加 xml_node 子节点对象

参数
tag{const char* tag} 子节点对象的标签名
txt{long long int} 节点中的文本内容,非空字符串
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{xml_node&} return_child 为 true 返回子节点的引用, 否则返回本 xml 节点引用

◆ add_child() [5/6]

xml_node& acl::xml_node::add_child ( const char *  tag,
long long int  number,
bool  return_child = false 
)

给本 xml 节点添加 xml_node 子节点对象

参数
tag{const char* tag} 子节点对象的标签名
number{long long int} 64 位整数
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{xml_node&} return_child 为 true 返回子节点的引用, 否则返回本 xml 节点引用

◆ add_child() [6/6]

xml_node& acl::xml_node::add_child ( const char *  tag,
istream in,
size_t  off = 0,
size_t  len = 0,
bool  return_child = false 
)

给本 xml 节点添加 xml_node 子节点对象,同时使用输入流中的内容做为节点的文本

参数
tag{const char* tag} 子节点对象的标签名
in{istream&} 输入流对象
off{size_t} 对于文件流,则指定要拷贝的数据的起始位置
len{size_t} 要拷贝的最大数据量,当为 0 时,则一直拷贝到流结束
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{xml_node&} return_child 为 true 返回子节点的引用, 否则返回本 xml 节点引用

◆ attr_value()

virtual const char* acl::xml_node::attr_value ( const char *  name) const
pure virtual

返回该 XML 节点的某个属性值

参数
name{const char*} 属性名
返回
{const char*} 属性值,如果返回空则说明该属性不存在

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ children_count()

virtual int acl::xml_node::children_count ( void  ) const
pure virtual

返回该 xml 节点的下一级子节点的个数

返回
{int} 永远 >= 0

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ clear()

void acl::xml_node::clear ( void  )

当在遍历该 xml 节点时,内部会动态产生一些临时 xml_node 对象,调用 此函数可以清空这些对象,一旦调用此函数进行了清除,则由 first_child/next_child 返回的 xml_node 节点对象将不再可用,否则会 产生内存非法访问

◆ depth()

virtual int acl::xml_node::depth ( void  ) const
pure virtual

返回该 XML 节点在整个 XML 树中的深度

返回
{int}

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ detach()

virtual int acl::xml_node::detach ( void  )
pure virtual

将本节点及其子节点从 xml 树中分离,其内存将由 xml 对象统一释放

返回
{int} 返回被释放的节点个数

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ first_attr()

virtual const xml_attr* acl::xml_node::first_attr ( void  ) const
pure virtual

遍历节点的所有属性时,需要调用此函数来获得第一个属性对象

返回
{const xml_attr*} 返回第一个属性对象,若为空,则表示 该节点没有属性

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ first_child()

virtual xml_node* acl::xml_node::first_child ( void  )
pure virtual

获得本节点的第一个子节点,需要遍历子节点时必须首先调用此函数

返回
{xml_node*} 返回空表示没有子节点

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ get_parent()

virtual xml_node& acl::xml_node::get_parent ( void  ) const
pure virtual

获得本节点的父级节点对象的引用

返回
{xml_node&}

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ get_xml()

xml& acl::xml_node::get_xml ( void  ) const

获得 xml 对象的引用

返回
{xml&}

◆ id()

virtual const char* acl::xml_node::id ( void  ) const
pure virtual

如果该 XML 节点的 ID 号属性不存在,则返回空指针

返回
{const char*} 当 ID 属性存在时返回对应的值,否则返回空

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ is_root()

virtual bool acl::xml_node::is_root ( void  ) const
pure virtual

判断当前节点是否为 xml 对象中的 root 节点

返回
{bool}

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ next_attr()

virtual const xml_attr* acl::xml_node::next_attr ( void  ) const
pure virtual

遍历节点的所有属性时,调用本函数获得下一个属性对象

返回
{const xml_attr*} 返回下一下属性对象,若为空,则表示 遍历完毕

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ next_child()

virtual xml_node* acl::xml_node::next_child ( void  )
pure virtual

获得本节点的下一个子节点

返回
{xml_node*} 返回空表示遍历过程结束

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ operator[]()

const char* acl::xml_node::operator[] ( const char *  name) const

返回该 XML 节点的某个属性值的便捷写法

参数
name{const char*} 属性名
返回
{const char*} 属性值,如果返回空则说明该属性不存在

◆ set_parent()

virtual xml_node& acl::xml_node::set_parent ( xml_node node)
pure virtual

设置本节点的父级节点

参数
node{xml_node*} 父节点
返回
{xml_node&}

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ set_text() [1/3]

virtual xml_node& acl::xml_node::set_text ( const char *  str,
bool  append = false 
)
pure virtual

设置 xml 节点的文本内容

参数
str{const char*} 字符串内容
append{bool} 添加文本时是采用追加模式还是覆盖模式,如果为追加模式, 则当原来该节点上有文本内容时,新添加的内容在原文本后面追加,否则则覆盖
返回
{xml_node&}

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ set_text() [2/3]

virtual xml_node& acl::xml_node::set_text ( istream in,
size_t  off = 0,
size_t  len = 0 
)
pure virtual

设置 xml 节点,同时将流对象中的数据做为该节点的文本内容

参数
in{istream&} 输入流对象
off{size_t} 对于文件流,则指定要拷贝的数据的起始位置
len{size_t} 要拷贝的最大数据量,当为 0 时,则一直拷贝到流结束
返回
{xml_node&}

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ set_text() [3/3]

xml_node& acl::xml_node::set_text ( long long int  number)

设置 xml 节点的文本内容

参数
number{long long int} 64 位整数
返回
{xml_node&}

◆ tag_name()

virtual const char* acl::xml_node::tag_name ( void  ) const
pure virtual

取得本 XML 节点的标签名

返回
{const char*} 返回 XML 节点标签名,如果返回空,则说明 不存在标签 xxxx,以防万一,调用者需要判断返回值

acl::xml1_node , 以及 acl::xml2_node 内被实现.

◆ text()

virtual const char* acl::xml_node::text ( void  ) const
pure virtual

返回该 XML 节点的正文内容

返回
{const char*} 返回空说明没有正文内容

acl::xml1_node , 以及 acl::xml2_node 内被实现.

友元及相关函数文档

◆ dbuf_guard

friend class dbuf_guard
friend

在文件 xml.hpp310 行定义.

◆ xml

friend class xml
friend

在文件 xml.hpp309 行定义.

类成员变量说明

◆ attrs_tmp_

std::vector<xml_attr*> acl::xml_node::attrs_tmp_
protected

在文件 xml.hpp326 行定义.

◆ nodes_tmp_

std::vector<xml_node*> acl::xml_node::nodes_tmp_
protected

在文件 xml.hpp325 行定义.

◆ xml_

xml* acl::xml_node::xml_
protected

在文件 xml.hpp324 行定义.


该类的文档由以下文件生成: