在InstallShield中寫Web.Config 就是和操作XML文件
需要調用系統的MSXML.DOMDocument
在開發Asp.net程序後.對WebConfig有自定義動態配置 需要動態生成Web.Config
特使用以下代碼實現,有什麼問題,請看客拍磚
#define ERROR_XML_FILE_CREATION "Setup could not create the setting file %s."
#define ERROR "Error"
prototype NUMBER LoadXML(STRING);
prototype OBJECT AddSetting(OBJECT,OBJECT,STRING,STRING);
//////////////////////////////////////////////////////////
//
// Write setting to an XML file using the MS xml parse
//
///////////////////////////////////////////////////////
function LoadXML(szFilename)
OBJECT oDoc; //XML 對象
OBJECT oNode,son_oNode,son_son_oNode; //節點
OBJECT Parent_oNode; //當前父節點
OBJECT pi; //指針
OBJECT oErr ;
begin
//創建XML對象,並且初始化部分值
set oDoc = CreateObject("MSXML.DOMDocument");
if (IsObject(oDoc) = FALSE ) then
SprintfBox(SEVERE,ERROR,ERROR_XML_FILE_CREATION,szFilename);
return -1;
endif;
oDoc.Async = FALSE;
oDoc.loadXML("<configuration/>");
set Parent_oNode = oDoc.documentElement;
//添加結構體<?xml version = "1.0">到文件頭
set pi= oDoc.createProcessingInstruction("xml","version="1.0" encoding="utf-8"");
oDoc.insertBefore(pi,oDoc.childNodes.item(0));
//添加某些應用程序的設置,這些設置將全部出現在當前節點的子項中。
//Ajax節點
set oNode = AddSetting(oDoc,Parent_oNode,"configSections","");
set oNode = AddSetting(oDoc,oNode,"sectionGroup","");
oNode.setAttribute("name","ajaxNet");
set oNode = AddSetting(oDoc,oNode,"section","");
oNode.setAttribute("name","ajaxSettings");
oNode.setAttribute("type","Ajax.AjaxSettingsSectionHandler, Ajax");
//appSettings節點
set oNode = AddSetting(oDoc,Parent_oNode,"appSettings","");
set son_oNode = AddSetting(oDoc,oNode,"add","");
son_oNode.setAttribute("key","__DBACCESS__");
son_oNode.setAttribute("value","SQL");
set son_oNode = AddSetting(oDoc,oNode,"add","");
son_oNode.setAttribute("key","__AppDataFileRootPath__");
son_oNode.setAttribute("value",WindowsVolume+"Data");
//system.web 節點
set oNode = AddSetting(oDoc,Parent_oNode,"system.web","");
set son_oNode = AddSetting(oDoc,oNode,"httpHandlers","");
set son_oNode = AddSetting(oDoc,oNode,"httpRuntime","");
son_oNode.setAttribute("maxRequestLength","1048576");
son_oNode.setAttribute("executionTimeout","3600");
set son_oNode = AddSetting(oDoc,oNode,"compilation","");
son_oNode.setAttribute("debug","true");
set son_oNode = AddSetting(oDoc,oNode,"authentication","");
son_oNode.setAttribute("mode","Windows");
set son_oNode = AddSetting(oDoc,oNode,"httpModules","");
set son_oNode = AddSetting(oDoc,oNode,"globalization","");
son_oNode.setAttribute("requestEncoding","gb2312");
son_oNode.setAttribute("responseEncoding","gb2312");
// MessageBox(oDoc.xml,SEVERE);
oDoc.save(szFilename) ;
set son_oNode = NOTHING;
set son_son_oNode = NOTHING;
set pi = NOTHING;
set Parent_oNode = NOTHING;
set oDoc = NOTHING;
return 0;
end;
////////////////////////////////////////////////////////////////////
//
// 在父節點上創建一個設置。
// <parent>
// <Nodename>Vaule</Nodename>
// </parent>
//
////////////////////////////////////////////////////////////////////
function OBJECT AddSetting(oDoc,oParent,szNodeName,szValue)
OBJECT oNode;
begin
//先加入一個空行
set oNode = oDoc.createTextNode(" ");
oParent.appendChild(oNode);
//創建一個新的節點和值
set oNode = oDoc.createElement(szNodeName);
oNode.text = szValue;
oParent.appendChild(oNode);
return oNode;
end;
調用代碼
LoadXML(IISROOTFOLDER+"某asp.net應用程序//Web.config");