tinyxml2 的 TiXmlAttribute 是什么,如何使用它?

What is the equivalent of TiXmlAttribute for tinyxml2 and how to use it?

提问人:John Mulaney 提问时间:5/24/2021 最后编辑:Andrew TruckleJohn Mulaney 更新时间:6/11/2021 访问量:162

问:

我遇到了一个问题,我无法使用 tinyxml2 解决。

我有一个作为参数 a 接收的函数,我需要遍历它的属性。使用 tinyxml,这有效:XMLElement

void xmlreadLight(TiXmlElement* light){
    for (TiXmlAttribute* a = light->FirstAttribute(); a ; a = a->Next()) {
         //Do stuff
    }
}

与tinyxml2使用相同的方法,如下面的示例所示,我收到以下错误:

Type 的值不能用于初始化 Type 的实体const tinyxml2::XMLAttribute *tinyxml2::XMLAttribute *

void xmlreadLight(XMLElement* light){
    for (XMLAttribute* a = light->FirstAttribute(); a ; a = a->Next()) {
         //Do stuff
    }
}

有问题的 XML 代码是:

<lights>
   <light type="POINT" posX=-1.0 posY=1.0 posZ=-1.0 ambtR=1.0 ambtG=1.0 ambtB=1.0 />
</lights>

其中 light 是传递到函数中的。不确定我的问题是否正确设置,所以如果缺少一些信息,请告诉我。XMLElementxmlreadLight

C++ TinyXML TinyXml2

评论


答:

2赞 Paul Sanders 5/24/2021 #1

根据错误消息,您似乎需要执行以下操作:

for (const XMLAttribute* a = light->FirstAttribute(); a ; a = a->Next()) { ...
     ^^^^^

据推测,返回类型 的 是在 tinyxml2 中完成的。FirstAttributeconst


如果你在 Github 存储库的第 1513 行检查 tinyxml2.h 文件,你会看到这个:

/// Return the first attribute in the list.
const XMLAttribute* FirstAttribute() const {
    return _rootAttribute;
}

评论

0赞 John Mulaney 5/24/2021
我试过了,但似乎我缺少一些调试信息。我以为应用程序因此而没有运行,即使使用 const,但代码中还有另一个错误。谢谢,这就是我需要的解决方案。