javascript能修改xml里某节点的属性值吗?比如修改
<stage stageCode="1" stageGreen="0"  minGreen="0" maxGreen="0" yellow="0" redClear="0" phases="0"></stage>里的stageCode的值,我知道setattribute,但文件里的值没有改变,文件还是原来那样,请问该怎么写代码?

解决方案 »

  1.   

    你setattribute后没有xml.save("xxx.xml");吗?
    如果xml在服务器上,估计是没法save的,本地的话建议用hta吧,htm还要更改权限.
      

  2.   

    可以通过获取xml文件内容为一个字符串,截取stageCode="进行赋值。然后再截取后面的后面剩余部分的第一个双引号部分处理。
    如:....<stage stageCode="1" stageGreen="0"  minGreen="0" maxGreen="0" yellow="0" redClear="0" phases="0">...截取stageCode="成为
    ...<stage stageCode="  1" stageGreen="0"  minGreen="0" maxGreen="0" yellow="0" redClear="0" phases="0"> ....
      

  3.   

    要是你文件里面有多个<stage stageCode=" 且个数不确定,又不能确定要给第几个赋值,那这方法真不行!
      

  4.   

    我做过给用xml 实现写word的功能,是事先在需要赋值的地方设置特殊的替换符 然后在需要复制时进行替换。
      

  5.   

    javascript是客户端的东西,修改文件这样的事情不应该交给它去做(何况它也做不了)这是应该是服务器端应该做的事儿
      

  6.   

    不使用xml.save("xxx.xml");的话,
    文件内容是不会改变的,但是在内存中已经改变。
      

  7.   

    有那么复杂么?只要会查就可以改! 最后save一下就可以.......
    比如  节点.getAttrebute("stageCode").text="你要换的值";
    最后doc.save();
    .....
      

  8.   

    客户端可以使用fso来解决这个问题。
      

  9.   

    参考
    function removeSource(id){
    var path=unescape(document.location.pathname);
    path=path.substring(1,path.lastIndexOf("/")+1);
    var doc = new ActiveXObject("MSXML2.DOMDocument.3.0");
    doc.async = false;
    doc.load(path+"data.xml");

    var items=doc.getElementsByTagName("items")[0];
    items.removeChild(items.childNodes[id]);

    var fso, filehandle;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    filehandle = fso.CreateTextFile(path+"data.xml", true);
    filehandle.Write(doc.xml);
    filehandle.Close();}