gpt4 book ai didi

c++ - TiXmlNode 枚举的 tinyxml2 等价物?

转载 作者:搜寻专家 更新时间:2023-10-31 01:46:19 26 4
gpt4 key购买 nike

什么是 tinyxml2 (v2) 替代 v1 的 TiXmlNode 枚举?
TinyXML v1 可以打开节点类型,但如何使用 TinyXML v2 的 XMLNode 实现。

switch (node->Type()) // v1 node type selector
{
case TiXmlNode::DOCUMENT:
wcout << L"Hello Document";
break;

最佳答案

基类XMLNode包含了一些虚转换方法,除非节点实际上是指定类型,否则返回NULL0 .

例如,如果您对实际上是 XMLText 的内容调用 ToText(),您将获得有效的 XMLText* 结果,否则你会得到 NULL

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

/// 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 类(它实现了所有这些转换方法)。要转换您的代码,您可以从这里开始:

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

进入这个:

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

关于c++ - TiXmlNode 枚举的 tinyxml2 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com