BOOL XMLDomParser::OnCharacterData(const XML_Char *s, int len) { XMLElementNode* pParent = m_stack.top(); XMLTextNode* p = pParent->GetTextChild(); if(!p) { // 严格遵循XML语法,不再Trim,否则会有bug by Allen 20131012 // s = this->Trim(s, len, len); // if(!len) return TRUE; p = new XMLTextNode(); pParent->AddChild(p); } p->AddText(s, len); return TRUE; }
BOOL XMLDomParser::OnStartElement(const XML_Char *name, const XML_Char **atts) { XMLElementNode* pParent = m_stack.top(); XMLElementNode* pElemNode = new XMLElementNode(); pElemNode->SetTagName(name); int i = 0; while(atts[i]) { const char* n = atts[i]; const char* val = atts[i+1]; pElemNode->AddAttribute(n, val); i += 2; } pParent->AddChild(pElemNode); m_stack.push(pElemNode); return TRUE; }