如何从 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>
and<i>
元素之后的所有文本?我该如何解决这个问题?此外,XMLPrinter 类使用标签正确地打印出来,但我不想要标签。