更新:仍然无法工作:(我已经更新了代码部分以反映我当前拥有的内容。
对于使用过 TinyXML 的人来说,这应该是一个相当简单的问题。我正在尝试使用 TinyXML 来解析 XML 文档并提取一些值。我昨天弄清楚了如何在库中添加,并且我已经成功加载了文档(嘿,这是一个开始)。
我一直在阅读手册,但我不太清楚如何提取各个属性。谷歌搜索后,我还没有找到我的具体示例的示例,所以也许使用过 TinyXML 的人可以帮忙。下面是 XML 的一部分,也是我开始解析它的地方。
XML:
<EGCs xmlns="http://tempuri.org/XMLSchema.xsd">
<card type="EGC1">
<offsets>
[ ... ]
</offsets>
</card>
<card type="EGC2">
<offsets>
[ ... ]
</offsets>
</card>
</EGCs>
加载/解析代码:
TiXmlDocument doc("EGC_Cards.xml");
if(doc.LoadFile())
{
TiXmlHandle hDoc(&doc);
TiXmlElement* pElem;
TiXmlHandle hRoot(0);
pElem = hDoc.FirstChildElement().Element();
if (!pElem) return false;
hRoot = TiXmlHandle(pElem);
//const char *attribval = hRoot.FirstChild("card").ToElement()->Attribute("card");
pElem = hDoc.FirstChild("EGCs").Child("card", 1).ToElement();
if(pElem)
{
const char* tmp = pElem->GetText();
CComboBox *combo = (CComboBox*)GetDlgItem(IDC_EGC_CARD_TYPE);
combo->AddString(tmp);
}
}
我想拉出每张卡“类型”并将其保存到字符串中以放入组合框。如何访问该属性成员?
经过大量修改代码后,这就是解决方案! (在帮助下HERE http://bytes.com/topic/xml/answers/745647-reading-xml-file-using-tinyxml)
TiXmlDocument doc("EGC_Cards.xml");
combo = (CComboBox*)GetDlgItem(IDC_EGC_CARD_TYPE);
if(doc.LoadFile())
{
TiXmlHandle hDoc(&doc);
TiXmlElement *pRoot, *pParm;
pRoot = doc.FirstChildElement("EGCs");
if(pRoot)
{
pParm = pRoot->FirstChildElement("card");
int i = 0; // for sorting the entries
while(pParm)
{
combo->InsertString(i, pParm->Attribute("type"));
pParm = pParm->NextSiblingElement("card");
i++;
}
}
}
else
{
AfxMessageBox("Could not load XML File.");
return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)