一開始做這個題目時,找了好多資料都沒有很好的介紹,不知道是我找東西的技術不好還是怎麼的,我找東西的技術不好嗎?NO!!花了點工夫,終於解決了這個問題,高興的同時也對網上這方面的資料的實用性深有感觸,正好有這麼個Blog,就放上來,希望對大家有點幫助。
function openFile(fileName) //打開文本文件,以字串返回文件內容
{
var fso, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile(fileName, ForReading);
s = ts.ReadAll();
ts.Close();
return s;
}
function saveFile(fileName,xmlStr)//保存文本文件
{
var fso, tf,f;
fso = new ActiveXObject("Scripting.FileSystemObject");
try
{
f = fso.GetFile(fileName);
f.attributes =0;
}
catch(e){}
tf = fso.CreateTextFile(fileName, true);
tf.Write(xmlStr);
tf.Close();
}
function saveXMLFile(pfilePath,xmlDom) //存爲XML文件
{
var xmlStr=xmlDom.xml;
xmlStr=xmlStr.replace("<?xml version=/"1.0/"?>","<?xml version=/"1.0/" encoding=/"gb2312/"?>");
//alert(pfilePath+","+xmlStr);
saveFile(pfilePath,xmlStr);
}
function loadDom(fileName)
{
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.resolveExternals = false;
xmlDoc.load(fileName);
return xmlDoc;
}
//依據XML串,創建DOM對象
function createDom(xmlStr)
{
var dom = new ActiveXObject("Msxml2.DOMDocument.3.0");
//創建DOM實例,並裝載文件
dom.async="false";
dom.loadXML(xmlStr);
return dom;
}
function fileExist(FileFullPath) //判斷文件是否存在
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.FileExists(FileFullPath))
{return true;}
else
{return false;}
}
function createXmlCfg(pTagName,pKeyName,pValue) //創建一個包含相關信息的新XML文件
{
var xmlStr="<?xml version=/"1.0/" encoding=/"gb2312/"?>";
xmlStr+="<Report/>";
var xmlDom=createDom(xmlStr);
var root=xmlDom.documentElement;
var infoNode=xmlDom.createNode(1,pTagName, "");
root.appendChild(infoNode);
var tmpNode=null;
var obj=null;
tmpNode=xmlDom.createNode(1,pKeyName,"");
tmpNode.text=pValue;
infoNode.appendChild(tmpNode);
saveXMLFile(GetXmlFilePath("userdefine"),xmlDom);
}
function addXmlTag(pTagName,pKeyName,pValue) //向XML文件中插入一個包含相關信息的新節點
{
var xmlDom=createDom(openFile(GetXmlFilePath("userdefine")));
var root=xmlDom.documentElement;
var infoNode=xmlDom.createNode(1,pTagName, "");
root.appendChild(infoNode);
var tmpNode=null;
var obj=null;
tmpNode=xmlDom.createNode(1,pKeyName,"");
tmpNode.text=pValue;
infoNode.appendChild(tmpNode);
var xmlStr=xmlDom.xml;
xmlStr=xmlStr.replace("<?xml version=/"1.0/"?>","<?xml version=/"1.0/" encoding=/"gb2312/"?>")
saveFile(GetXmlFilePath("userdefine"),xmlStr);
}
function addXmlKey(pTagName,pKeyName,pValue) //向XML中的相關節點插入新信息
{
var xmlDom=createDom(openFile(GetXmlFilePath("userdefine")));
var pNodeList=xmlDom.getElementsByTagName(pTagName);
var pchildNode=pNodeList.item(0);
var tmpNode=null;
var obj=null;
tmpNode=xmlDom.createNode(1,pKeyName,"");
tmpNode.text=pValue;
pchildNode.appendChild(tmpNode);
var xmlStr=xmlDom.xml;
xmlStr=xmlStr.replace("<?xml version=/"1.0/"?>","<?xml version=/"1.0/" encoding=/"gb2312/"?>")
saveFile(GetXmlFilePath("userdefine"),xmlStr);
}
function GetXmlFilePath(FileType) //取得配置文件的路徑:FileType代表文件類型,default爲default.xml,userdefine同理
{
var dir = location.href.substring(0,location.href.lastIndexOf('?')+1);
var XmlFilePath = location.href.substring(dir.length,location.href.length+1);
XmlFilePath=XmlFilePath.replace("file:///","");
XmlFilePath=XmlFilePath.substring(0,XmlFilePath.lastIndexOf("/"));
XmlFilePath=XmlFilePath.substring(0,XmlFilePath.lastIndexOf("/"));
switch (FileType) {
case "default":
XmlFilePath=XmlFilePath+"/config/default.xml";
break;
case "userdefine":
XmlFilePath=XmlFilePath+"/config/userdefine.xml";
break
default:
alert("不清楚是默認文件或用戶自定義文件!");
return false;
}
XmlFilePath=XmlFilePath.replace("/","//");
return(XmlFilePath);
}
function setValueByName(FileType,pTagName,pKeyName,pValue) //XML文件定位賦值
{
var xmlDom;
if (fileExist(GetXmlFilePath(FileType)))
{
xmlDom=createDom(openFile(GetXmlFilePath(FileType)));
}
else
{
//alert("用戶配置文件不存在,將創建新文件");
//創建文件
createXmlCfg(pTagName,pKeyName,pValue);
alert("已保存修改信息,以後將按修改後的配置進行A4紙打印!");
return;
}
try
{
var pNodeList=xmlDom.getElementsByTagName(pTagName);
if (pNodeList.item(0)==null)
{
//alert("不存在該表信息!");
addXmlTag(pTagName,pKeyName,pValue);
alert("已保存修改信息,以後將按修改後的配置進行A4紙打印!");
return;
}
var pchildNode=pNodeList.item(0).firstChild;
for (j=1;;j++)
{
if (pchildNode.nodeName==pKeyName)
{
pchildNode.text=pValue;
break;
}
pchildNode=pchildNode.nextSibling;
}
var xmlStr=xmlDom.xml;
xmlStr=xmlStr.replace("<?xml version=/"1.0/"?>","<?xml version=/"1.0/" encoding=/"gb2312/"?>")
saveFile(GetXmlFilePath(FileType),xmlStr);
alert("已保存修改信息,以後將按修改後的配置進行A4紙打印!");
}
catch(e)
{
//alert("該表打印配置節點不存在!");
addXmlKey(pTagName,pKeyName,pValue);
alert("已保存修改信息,以後將按修改後的配置進行A4紙打印!");
return;
}
}
function getValueByName(FileType,pTagName,pKeyName) //取得特定節點的值
{
var curFileType=FileType;//當前配置文件類型。
var xmlDom;
if (fileExist(GetXmlFilePath(FileType)))
{
xmlDom=createDom(openFile(GetXmlFilePath(FileType)));
}
else
{
if (fileExist(GetXmlFilePath("default")))
{
//alert("用戶自定義設置文件不存在,將取默認設置!");
xmlDom=createDom(openFile(GetXmlFilePath("default")));
curFileType="default";
}
else
{
alert("不存在打印設置文件,請在線更新系統以取得默認設置文件,或在頁面調整中保存自定義設置以創建用戶自定義打印配設置文件!");
return false;
}
}
try
{
var pNodeList=xmlDom.getElementsByTagName(pTagName);
//alert(pNodeList.item(0).nodeName);
var pchildNode=pNodeList.item(0).firstChild;
var pValue;
for (j=1;;j++)
{
if (pchildNode.nodeName==pKeyName)
{
pValue=pchildNode.text;
return pValue;
break;
}
pchildNode=pchildNode.nextSibling;
}
}
catch(e)
{
if (curFileType=="default") //默認配置文件中不存在對該表的配置
{
alert("打印設置文件中不存在對該表的設置,請在線更新系統以取得最新默認設置文件,或在頁面調整中保存自定義設置以創建用戶自定義打印配設置文件!");
return false;
}
else
{
//alert("自定義打印設置中不存在對該表的打印設置,將取默認值!");
return getValueByName("default",pTagName,pKeyName);
}
}
}