利用XML类Markup.h,修改Vege Prime的ACF文件。
<AcfRoot>
<vp:Object name="ZhiHuiSuo">
.......
<vp:setStaticEnable>false</vp:setStaticEnable>
<vp:setFileName>11.flt</vp:setFileName>
........
</vp:Object>
</AcfRoot>
这是ACF文件中,一个OBJECT部分代码。
vp:Object为父节点名称。
name为父节点属性。
"ZhiHuiSuo"为name属性的值。
<vp:setFileName>为vp:Object下一个子节点的名称。
11.flt为<vp:setFileName>的值。
VC添加Markup类。
Markup常用函数:
Load//加载XML
ResetMainPos()//重置光标位置
FindElem 定位到下一个元素,可能和一个标签名或路径匹配。
IntoElem 进入当前主位置的下一级,当前的位置变为父位置。
GetAttrib 得到当前节点属性值。
FindChildElem 定位到当前节点子节点,参数为子节点名称。
SetChildData 设置当前节点子节点的值
利用上面函数,修改
<vp:setFileName>11.flt</vp:setFileName>为<vp:setFileName>22.flt</vp:setFileName>
bool XMLChangeModlePos(CString XMLName)
{
BOOL bLoadXml=false;
bLoadXml=MyXml->Load(XMLName);
if (bLoadXml)
{
CString strAttrib = _T("");
MyXml->ResetMainPos();
MyXml->FindElem();
MyXml->IntoElem();
while (MyXml->FindElem("vp:Object"))
{
strAttrib = MyXml->GetAttrib("name");
if (strAttrib=="ZhiHuiSuo")
{
while(MyXml->FindChildElem("vp:setFileName"))
{
MyXml->SetChildData("22.flt",0);
MyXml->Save(XMLName);
break;
}
}
}
}else{
return false;
}
return true;
}