1 #ifndef __EIEN__EIENML__ELEMENTUTILS_HPP__ 2 #define __EIEN__EIENML__ELEMENTUTILS_HPP__ 30 #define DEFINE_NEWDOC_FUNC( cls ) DEFINE_NEWOBJ_FUNC( cls, eienml::Document ) 31 #define DEFINE_NEWBLOCK_FUNC( cls ) DEFINE_NEWOBJ_FUNC( cls, eienml::Block ) 32 #define DEFINE_NEWELEM_FUNC( cls ) DEFINE_NEWOBJ_FUNC( cls, eienml::Element ) 33 #define DEFINE_NEWTEXT_FUNC( cls ) DEFINE_NEWOBJ_FUNC( cls, eienml::TextNode ) 34 #define DEFINE_NEWNODE_FUNC( cls ) DEFINE_NEWOBJ_FUNC( cls, eienml::Node ) 35 #define DEFINE_NEWOBJ_FUNC( cls, ret ) \ 36 inline static ret * NewInstance( void )\ 42 #define ClassObj( cls, p ) ( static_cast<cls *>(p) ) 43 #define TextNodeObj( p ) ClassObj( eienml::TextNode, (p) ) 44 #define BlockObj( p ) ClassObj( eienml::Block, (p) ) 45 #define ElementObj( p ) ClassObj( eienml::Element, (p) ) 46 #define DocumentObj( p ) ClassObj( eienml::Document, (p) ) 61 virtual ~
Node(
void );
64 void delInstance(
void );
68 virtual
void doWork(
void );
74 Document * getDocument(
void ) const;
94 virtual
void doWork(
void ) override;
109 virtual ~
Block(
void );
133 virtual ~Element(
void );
136 virtual
winux::AnsiString toString(
int procType =
ProcType_Raw ) const override;
137 virtual
void doWork(
void ) override;
141 virtual
void childDoWork(
void );
144 virtual
winux::AnsiString attrsToString(
void ) const;
153 bool addTextToLast(
winux::AnsiString const & str,
TextNode * * p = NULL );
155 bool addChild( Node * element );
157 void getElements( ElementArray * arr,
winux::AnsiString const & tagName );
159 void getBlocks( BlockArray * arr,
winux::AnsiString const & blockTag );
161 bool hasAttr(
winux::AnsiString const & name ) const;
163 winux::AnsiString getAttr(
winux::AnsiString const & name ) const;
165 void setAttr(
winux::AnsiString const & name,
winux::AnsiString const & value );
167 void delAttr(
winux::AnsiString const & name );
169 bool hasChildren(
void ) {
return !this->children.empty(); }
206 virtual
void doWork(
void ) override;
213 #endif // __EIEN__EIENML__ELEMENTUTILS_HPP__ XString< char > AnsiString
#define DEFINE_ATTR_METHOD_VAL(ty, name, memname)
std::vector< Block * > BlockArray
winux::AnsiString tagName
Tag名称
std::vector< Element * > ElementArray
#define DEFINE_NEWDOC_FUNC(cls)
std::vector< Node * > NodeArray
winux::AnsiString defAttr
默认属性
#define DEFINE_NEWELEM_FUNC(cls)
#define DEFINE_NEWNODE_FUNC(cls)
#define DEFINE_ATTR_METHOD_VAL_READONLY(ty, name, memname)
#define DEFINE_NEWTEXT_FUNC(cls)
winux::AnsiString rawElemTail
未解析的原始尾文本
#define DEFINE_NEWBLOCK_FUNC(cls)
winux::AnsiString rawElemHead
未解析的原始头文本
std::map< winux::AnsiString, winux::AnsiString > Attributes