xml读取、保存不同类型打印配置的代码[原创]
2005-06-13 14:11
585 查看
2004.10.15发表于blog.csdn.net/zxub
一开始做这个题目时,找了好多资料都没有很好的介绍!花了点工夫,终于解决了这个问题,高兴的同时也对网上这方面的资料的实用性深有感触,正好有这么个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);
}
}
}
一开始做这个题目时,找了好多资料都没有很好的介绍!花了点工夫,终于解决了这个问题,高兴的同时也对网上这方面的资料的实用性深有感触,正好有这么个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);
}
}
}
相关文章推荐
- xml读取、保存不同类型打印配置的代码[原创]
- 依据不同的操作系统读取配置文件/java读取属性文件代码
- 关于不同类型的结构体的数组的读取和保存的测试程序
- INI的替代品--XML配置文件读取与保存
- paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结
- windows 系统在vs2010 中配置libxml2,及读取xml代码例子
- paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结
- C#打印系统读取和写入XML配置文件
- 代码动态读取xml配置文件
- 根据不同的操作系统读取配置文件/java读取属性文件代码
- XML:根据浏览器类型屏幕分辨率自动调用不同CSS的代码
- Spring配置 在xml和java代码中读取properties文件
- 从xml读取游戏配置信息或保存
- INI的替代品--XML配置文件读取与保存
- 一个可以完成读取、打印输出、保存xml等等功能的java例子
- 使用.NET 反射机制(Reflecttion)读取和保存Xml配置文档
- Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)
- mybatis 自增主键配置(不同类型的数据库,代码写法不同)
- blob类型的数据,可以保存图片,直接把图片转化为代码,和text不同,editkindor常用到
- java dom4j解析XML读取数据源配置的代码实例