C++ tinyxml2相当于TiXmlNode枚举?

C++ tinyxml2相当于TiXmlNode枚举?,c++,xml-parsing,tinyxml,tinyxml2,C++,Xml Parsing,Tinyxml,Tinyxml2,tinyxml2(v2)替代v1的TiXmlNode枚举是什么? TinyXML v1可以打开节点类型,但如何使用TinyXML v2的XMLNode进行同样的操作 switch (node->Type()) // v1 node type selector { case TiXmlNode::DOCUMENT: wcout << L"Hello Document"; break; 开关(节点->类型()//v1节点类型选择器 { 案例TiXm

tinyxml2(v2)替代v1的TiXmlNode枚举是什么?
TinyXML v1可以打开节点类型,但如何使用TinyXML v2的XMLNode进行同样的操作

switch (node->Type()) // v1 node type selector
{
    case TiXmlNode::DOCUMENT:
        wcout << L"Hello Document";
    break;
开关(节点->类型()//v1节点类型选择器
{
案例TiXmlNode::文档:

wcout基类
XMLNode
包含许多虚拟转换方法,这些方法返回
NULL
0
,除非节点实际属于指定类型

例如,如果对实际为
XMLText
的对象调用
ToText()
,则将得到有效的
XMLText*
结果,否则将得到
NULL

以下是可用的方法(在
XMLNode
中):

我不知道为什么要这样做;可能类型枚举在实践中没有那么有用,或者可能是为了支持内部
XMLHandle
类(它实现了所有这些强制转换方法)。要转换代码,您可以这样做:

switch (node->Type()) {
    case TiXMLNode::DOCUMENT:
        ...
        break;
    case TiXMLNode::TEXT:
        ...
        break;
    ...
}
为此:

XMLDocument *doc = node->ToDocument();
if (doc) {
    ...
}
XMLText *text = node->ToText();
if (text) {
    ...
}

使用开关()关于枚举的语句要优雅得多。我希望缺少枚举不是因为作者试图简化。如果是这样,那就太离谱了。你的答案让我畅通无阻。谢谢。如果没有更优雅的内容出现,我会勾选你的答案。@b我怀疑其中一个动机是当查询节点类型时,人们被强制转换不过,你还是需要问作者真正的原因。tinyXml(v2)有太多问题,所以我切换到pugiXml。pugiXml工作得很好。我同意enum更优雅(升级到tinyxml2时有一分钟感到困惑),但就我个人而言,我从来都不需要这样的switch语句,也就是说,我很清楚我当时需要什么类型的元素(我想这更像SAX风格),这样我就可以保存一个操作(类型enum check),只要继续使用To[type]()的结果(如果有的话)。
XMLDocument *doc = node->ToDocument();
if (doc) {
    ...
}
XMLText *text = node->ToText();
if (text) {
    ...
}