分享

使用Javascript创建XML文件

 JS资料库 2014-07-21
function CreateXml()
{
    //创建方法一
    var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
    xmldoc.async = false;
    xmldoc.load("temp1.xml");
    
    var p=xmldoc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");//创建声明
    xmldoc.appendChild(p);//添加声明
    
    var root=xmldoc.createElement("root");//创建根节点。
    //var root = doc.createNode(1,"students","");//也可以这样创建根节点。
    xmldoc.appendChild(root);
    
    //创建方法二
    var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
    xmldoc.async = false;
    xmldoc.load("temp3.xml");
    var content="<?xml version='1.0' encoding='gb2312'?><root/>"
    xmldoc.loadXML(content);
    
    //保存方法一
    xmldoc.save("c:/temp1.xml");
    
    //保存方法二
    var fso=new ActiveXObject("Scripting.FileSystemObject");
    var ts=fso.createTextFile("C:/temp2.xml",true);
    ts.write(xmldoc.xml);
    ts.close();
}
 问题:使用保存方法二得到的xml文件是
<?xml version="1.0"?>
<root/>
文档的头部丢失了encoding='gb2312'。
常见的错误:
1、automation服务器不能创建对象
解决方法
(1).主要是Scripting.FileSystemObject (FSO 文本文件读写)被关闭了,开启FSO功能即可,在“运行”中执行regsvr32 scrrun.dll

(2).如果javascript脚本中报这个错误是因为IE的安全设置不允许运行未标记为安全的activeX控件 更改IE的安全设置,把相应的选项打开即可。
2、尝试修改一个只读节点
   解决方法:设置dom.saync=false;//是否同步载入。
saync: Specifies if asynchronous download is permitted.
在默认情况下,XML文档的装载和解析不是同步发生的,为了同步装载XML文档,应把async特性设置为false。
false即不同步,即完成dom的读取后再执行以下的操作
true  即在load的时候可进行其他操作   不会出现线程死锁  
但在服务器端脚本中只能为false
(这是在网上找到的一点资料,至于saync的深层含义,还是不甚了解。)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多