所以我创建了一个 XML 文件,它将配置一个已经构建的应用程序。到目前为止,它是用表示闪存中偏移值的常量进行硬编码的。
enum {
MAIN_FLASH_OFFSET = 0x01000000,
LOADER_FLASH_OFFSET = 0x01e00000,
MICROCODE_FLASH_OFFSET = 0x00060400,
DRIVER_FLASH_OFFSET = 0x00100000,
OTHER_FLASH_OFFSET = 0x00500000
} ModuleOffsets;
我修改了应用程序以从 XML 文件中读取,以根据用户选择的显卡动态配置这些偏移量。
在我的一个头文件中,我添加了以下内容来替换以前的枚举:
int MAIN_FLASH_OFFSET;
int LOADER_FLASH_OFFSET;
int MICROCODE_FLASH_OFFSET;
int DRIVER_FLASH_OFFSET;
int OTHER_FLASH_OFFSET;
这是我的问题。我正在使用 TinyXML 来解析文档。下面是 XML 的一部分,以及我想要在其中提取这些值的代码。当它试图将其拉入时,它会遇到麻烦,因为 GetText() 返回一个字符串,而值(0x01000000 等)是整数(至少我认为。
那么我该如何存储这些呢?我真的不知道,但我觉得我很接近。
XML(实际文件有多个卡片条目)
<EGCs xmlns="http://tempuri.org/XMLSchema.xsd">
<card type="EGC1">
<offsets>
<flashOffset>0x01000000</flashOffset>
<loaderFlashOffset>0x01e00000</loaderFlashOffset>
<microFlashOffset>0x00060400</microFlashOffset>
<driverFlashOffset>0x00100000</driverFlashOffset>
<otherFlashOffset>0x00500000</otherFlashOffset>
</offsets>
</card>
</EGCs>
代码
COFPFileGeneratorDlg ofp;
TiXmlDocument doc("EGC_Cards.xml");
if(doc.LoadFile())
{
TiXmlHandle hDoc(&doc);
TiXmlElement *pRoot, *pParm;
pRoot = doc.FirstChildElement("EGCs");
if(pRoot)
{
pParm = pRoot->FirstChildElement("card");
while(pParm)
{
if(pParm && pParm->Attribute("type") == m_dConfigDlg.m_strEGCType)
{
ofp.MAIN_FLASH_OFFSET = pRoot
->FirstChildElement("card")
->FirstChildElement("flashOffset")
->GetText();
[...]
// close braces