如何从TinyXML2中的节点和子节点获取文本?TinyXML2从节点和所有子节点获取文本
XMLPrinter类似乎做我需要的,但它不能正确打印文本。
我的XML:
<div>The quick brown <b>fox</b> jumps over the <i>lazy</i> dog.</div>
我的类,其延伸的XMLPrinter类:
class XMLTextPrinter : public XMLPrinter {
virtual bool VisitEnter (const XMLDocument &) { return true; }
virtual bool VisitExit (const XMLDocument &) { return true; }
virtual bool VisitEnter (const XMLElement &e, const XMLAttribute *) {
auto text = e.GetText();
if(text) {
std::cout << text;
}
return true;
}
virtual bool VisitExit (const XMLElement &e) { return true; }
virtual bool Visit (const XMLDeclaration &) { return true; }
virtual bool Visit (const XMLText &e) { return true; }
virtual bool Visit (const XMLComment &) { return true; }
virtual bool Visit (const XMLUnknown &) { return true; }
};
我的代码:
XMLDocument document;
document.Parse(..., ...);
auto elem = ...;
XMLTextPrinter printer;
elem->Accept(&printer);
输出:
The quick brown foxlazy
为什么它忽略了在<b>
和<i>
元素之后出现的所有文本?我该如何解决这个问题?此外,XMLPrinter类正确地打印出与标签,但我不想标签。