我想解析 XML 文档中的一些数据,我正在使用 while 循环。
Poco::XML::NodeIterator it(_pDocument, Poco::XML::NodeFilter::SHOW_ELEMENT);
Poco::XML::Node* pNode = it.nextNode();
pNode = it.nextNode();
while (pNode)
{
std::cout<<pNode->nodeName()<<" :"<< pNode->nodeValue() << "\n";
if (pNode->nodeName() == "name")
{
std::cout << "Loading Map with Name : " << getString(pNode->nodeName()) << "\n";
}
if (pNode->nodeName() == "actor")
{
std::cout << "Actor Type : " << getString("actor[@type]") << "Actor Name : " << getString("actor[@name]") << "\n";
}
pNode = it.nextNode();
}
这有效(尽管可能不是最好的解决方案)。但是,在我的 XML 中有 2 个具有不同值的演员元素,但代码两次返回第一个元素的值。
编辑:
<thorium>
<name>SampleLevel</name>
<actor type="1Volume" name="m_pActor1" enabled="true">
<attribute name="Rotation" value="-1.0 1.0 0.0"/>
<attribute name="Position" value="-1.2 0.0 0.0"/>
</actor>
<actor type="2Volume" name="m_pActor2" enabled="false">
<attribute name="Rotation" value="1.0 1.0 0.0"/>
<attribute name="Position" value="1.2 0.0 0.0"/>
</actor>