首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tinyxml2等价于TiXmlNode枚举?

tinyxml2等价于TiXmlNode枚举?
EN

Stack Overflow用户
提问于 2013-12-30 22:29:22
回答 1查看 910关注 0票数 2

什么是tinyxml2 (v2)替换v1的TiXmlNode枚举?

TinyXML v1可以打开节点类型,但是如何对TinyXML v2的XMLNode做同样的操作。

代码语言:javascript
复制
switch (node->Type()) // v1 node type selector
{
    case TiXmlNode::DOCUMENT:
        wcout << L"Hello Document";
    break;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-31 04:26:22

基类XMLNode包含许多虚拟转换方法,这些方法返回NULL0,除非节点实际上是指定类型的。

例如,如果您对实际上是一个ToText()的东西调用XMLText,您将得到一个有效的XMLText*结果,否则您将得到NULL

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

代码语言:javascript
复制
/// Safely cast to an Element, or null.
virtual XMLElement* ToElement() {
    return 0;
}
/// Safely cast to Text, or null.
virtual XMLText* ToText() {
    return 0;
}
/// Safely cast to a Comment, or null.
virtual XMLComment* ToComment() {
    return 0;
}
/// Safely cast to a Document, or null.
virtual XMLDocument* ToDocument() {
    return 0;
}
/// Safely cast to a Declaration, or null.
virtual XMLDeclaration* ToDeclaration() {
    return 0;
}
/// Safely cast to an Unknown, or null.
virtual XMLUnknown* ToUnknown() {
    return 0;
}

我不知道为什么要这样做;也许类型枚举在实践中并不那么有用,或者是为了支持内部的XMLHandle类(它实现了所有的cast方法)。要转换您的代码,您可以从以下几个方面着手:

代码语言:javascript
复制
switch (node->Type()) {
    case TiXMLNode::DOCUMENT:
        ...
        break;
    case TiXMLNode::TEXT:
        ...
        break;
    ...
}

这方面:

代码语言:javascript
复制
XMLDocument *doc = node->ToDocument();
if (doc) {
    ...
}
XMLText *text = node->ToText();
if (text) {
    ...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20848609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档