• xml读取、保存不同类型打印配置的代码[原创]


      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);
        }
     }
    }

  • 相关阅读:
    占满屏幕的宽高,当把textarea换成其他标签的时候,怎么才能编辑?
    鼠标点击文本框后,里面的文字就消失或全选中
    jquery中选取兄弟节点的方法
    文本出现省略号
    滚动条的样式
    省略号的样式。
    input的placeholder在ie9下不兼容的结局办法。
    [CF1097D] Makoto and a Blackboard
    [CF552C] Vanya and Scales
    [CF1353E] K-periodic Garland
  • 原文地址:https://www.cnblogs.com/zxub/p/173601.html
Copyright © 2020-2023  润新知