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::OnEndElement(const XML_Char *name) { // 清除空的TextNode by Allen, 20131012 XMLElementNode* p = m_stack.top(); XMLTextNode* pText = p->GetTextChild(); if (pText) { int len; KXmlString& text = pText->m_text.m_val; this->Trim(text.c_str(), (int)text.size(), len); if (!len) { p->RemoveTextChild(); } else { text.resize(len); } } m_stack.pop(); return TRUE; }