以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  请教javascript生成XML文件?(问题解决了,感谢Qr同学)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=24602)


--  作者:werho
--  发布时间:11/23/2005 4:44:00 PM

--  请教javascript生成XML文件?(问题解决了,感谢Qr同学)
请大家看看这函数
<script language=JavaScript>
function createXML()
{
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")


//加载文档
doc.load("C:\Tomcat5\webapps\CBF\b.xml");
doc.async = false;


//创建文件头
var p = doc.createProcessingInstruction("xml","version='1.0'  encoding='gb2312'");

     //添加文件头
     doc.appendChild(p);

//用于直接加载时获得根接点
//var root = doc.documentElement;

//两种方式创建根接点
//    var root = doc.createElement("students");
     var root = doc.createNode(1,"students","");

     //创建子接点
     var n = doc.createNode(1,"ttyp","");

         //指定子接点文本
         //n.text = " this is a test";
     
     //创建孙接点
     var o = doc.createElement("sex");
         o.text = "男";    //指定其文本

     //创建属性
     var r = doc.createAttribute("id");
         r.value="test";

         //添加属性
         n.setAttributeNode(r);

     //创建第二个属性    
     var r1 = doc.createAttribute("class");
         r1.value="tt";
         
         //添加属性
         n.setAttributeNode(r1);

         //删除第二个属性
         n.removeAttribute("class");

         //添加孙接点
         n.appendChild(o);

         //添加文本接点
         n.appendChild(doc.createTextNode("this is a text node."));

         //添加注释
         n.appendChild(doc.createComment("this is a comment\n"));
     
         //添加子接点
         root.appendChild(n);
     
     //复制接点
     var m = n.cloneNode(true);

         root.appendChild(m);
         
         //删除接点
         root.removeChild(root.childNodes(0));

     //创建数据段
     var c = doc.createCDATASection("this is a cdata");
         c.text = "hi,cdata";
         //添加数据段
         root.appendChild(c);
     
     //添加根接点
     doc.appendChild(root);

     //查找接点
     var a = doc.getElementsByTagName("ttyp");
     //var a = doc.selectNodes("//ttyp");

     //显示改接点的属性
     for(var i= 0;i<a.length;i++)
      {
         alert(a[i].xml);
         for(var j=0;j<a[i].attributes.length;j++)
          {
             alert(a[i].attributes[j].name);
         }
     }

     //修改节点,利用XPATH定位节点
     var b = doc.selectSingleNode("//ttyp/sex");
     b.text = "女";

     alert(doc.xml);

     //XML保存(需要在服务端,客户端用FSO)
     doc.save();
     
     //查看根接点XML
     if(n)
      {
         alert(n.ownerDocument.xml);
     }
}     

</script>
为什么在doc.save();时,报错误的参数或无效的属性值呀!
请大家帮帮我吧!


[此贴子已经被作者于2005-11-24 10:51:05编辑过]

--  作者:Qr
--  发布时间:11/23/2005 4:54:00 PM

--  
http://bbs.xml.org.cn/dispbbs.asp?boardID=1&ID=7413
用fso写盘吧。
--  作者:werho
--  发布时间:11/24/2005 10:41:00 AM

--  
请Qr能否说的明白些,用fso写盘是什么意思呀!
--  作者:werho
--  发布时间:11/24/2005 10:47:00 AM

--  
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")


//加载文档
doc.load("C:\Tomcat5\webapps\CBF\b.xml");
doc.async = false;
doc.resolveExternals = false;
doc.validateOnParse = false;

//创建文件头
var p = doc.createProcessingInstruction("xml","version='1.0'  encoding='gb2312'");

     //添加文件头
     doc.appendChild(p);

//用于直接加载时获得根接点
//var root = doc.documentElement;

//两种方式创建根接点
//    var root = doc.createElement("students");
     var root = doc.createNode(1,"students","");

     //创建子接点
     var n = doc.createNode(1,"ttyp","");

         //指定子接点文本
         //n.text = " this is a test";
     
     //创建孙接点
     var o = doc.createElement("sex");
         o.text = "男";    //指定其文本

     //创建属性
     var r = doc.createAttribute("id");
         r.value="test";

         //添加属性
         n.setAttributeNode(r);

     //创建第二个属性    
     var r1 = doc.createAttribute("class");
         r1.value="tt";
         
         //添加属性
         n.setAttributeNode(r1);

         //删除第二个属性
         n.removeAttribute("class");

         //添加孙接点
         n.appendChild(o);

         //添加文本接点
         n.appendChild(doc.createTextNode("this is a text node."));

         //添加注释
         n.appendChild(doc.createComment("this is a comment\n"));
     
         //添加子接点
         root.appendChild(n);
     
     //复制接点
     var m = n.cloneNode(true);

         root.appendChild(m);
         
         //删除接点
         root.removeChild(root.childNodes(0));

     //创建数据段
     var c = doc.createCDATASection("this is a cdata");
         c.text = "hi,cdata";
         //添加数据段
         root.appendChild(c);
     
     //添加根接点
     doc.appendChild(root);

     //查找接点
     var a = doc.getElementsByTagName("ttyp");
     //var a = doc.selectNodes("//ttyp");

     //显示改接点的属性
     for(var i= 0;i<a.length;i++)
      {
         alert(a[i].xml);
         for(var j=0;j<a[i].attributes.length;j++)
          {
             alert(a[i].attributes[j].name);
         }
     }

     //修改节点,利用XPATH定位节点
     var b = doc.selectSingleNode("//ttyp/sex");
     b.text = "女";

     alert(doc.xml);

     //XML保存(需要在服务端,客户端用FSO)
     doc.save("C:/Tomcat5/webapps/CBF/b.xml");
     
     //查看根接点XML
     if(n)
      {
         alert(n.ownerDocument.xml);
     }


--  作者:werho
--  发布时间:11/24/2005 10:50:00 AM

--  
请大家特别注意加红色的地方,这样就可以保存到服务器断了,真是神奇呀!
特别感谢Qr同学!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
109.375ms