有这样一段代码,解析persons.xml文件并放到页面中。我在页面中可以修改各个值,然后我想把修改的东西重新保存到persons.xml中。这个persons.xml是本地文件。这个是xmlDoc.hta文件里面的代码:<html>
  <head>
    <title>文档操作测试</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
<script type="text/javascript">
//获取xml解析器 --w3school
function getXMLDoc(){
try{ //Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
return xmlDoc;
}
catch(e){
   try{ //Firefox, Mozilla, Opera, etc.
     xmlDoc = document.implementation.createDocument("","",null);
return xmlDoc;
    }
   catch(e) {alert(e.message)}
}
}

function readPeoplesXML(fileName){
try{
xmlDoc = getXMLDoc();
xmlDoc.async = false;
xmlDoc.load(fileName);
var root = xmlDoc.getElementsByTagName("peoples")[0];

var table = document.getElementById("table");
var peopleList = root.getElementsByTagName("people");
for(i = 0;i < peopleList.length;i ++){
var people = peopleList[i];
var row = table.insertRow();

var name = row.insertCell();
var age = row.insertCell();

name.setAttribute("align","center");
name.innerHTML = "<input type='text' size='5' id='name"+i
   + "' value='"+people.getElementsByTagName("name")[0].childNodes[0].nodeValue
   + "' onchange='save(this)'/>";
   
age.setAttribute("align","center");
age.innerHTML = "<input type='text' size='5' id='age"+i
  + "' value='"+people.getElementsByTagName("age")[0].childNodes[0].nodeValue
  + "' onchange='save(this)'/>";
}
}
catch(e) {alert(e.message)}
}

function save(comt){
alert(comt.id);
}
</script>
  </head>
  
  <body>
    <table id="table">
     <tr>
     <td>文件路径:</td>
     <td><input type="file" onchange="readPeoplesXML(this.value);" size="10"></td>
     </tr>
     <tr><td colspan="2">&nbsp;</td></tr>
     <tr>
     <th>姓名</th>
     <th>年龄</th>
     </tr>
    </table>
  </body>
</html>这个是persons.xml文件:<?xml version="1.0" encoding="UTF-8"?>
<peoples>
<people>
<name>赵浮云</name>
<age>20</age>
</people>
<people>
<name>钱浮云</name>
<age>21</age>
</people>
<people>
<name>孙浮云</name>
<age>22</age>
</people>
<people>
<name>李浮云</name>
<age>23</age>
</people>
</peoples>
请问是不是用FailSystemObject来实现?具体怎么弄呢?  求代码啊,希望能有适当的注释,本人理解能力不强
再申明一下,没有服务器,这只是个本地的程序,可以说是纯javascript代码。

解决方案 »

  1.   


    求高手啊,帮忙完善一下这个保存的方法啊    :    function save(comt){
                alert(comt.id);
            }
      

  2.   

    {url=http://wensky.iteye.com/blog/151830]参考[/url]
      

  3.   

    为啥不用后台语言去操作呢?
    1.ActiveXObject("Scripting.FileSystemObject");   //IE特有,不兼容其他浏览器
    2.XML对象本身的save方法,这个行不通,要进行安全设置
      

  4.   


    我只需要支持IE,w3school的方法不知道为什么Mozilla浏览器没过
    这是.hta文件,不用安全设置
      

  5.   


    <html>
      <head>
        <title>文档操作测试</title>
        
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        
        <script type="text/javascript">
            //获取xml解析器    --w3school
            function getXMLDoc(){
                try{ //Internet Explorer
                    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                    return xmlDoc;
                }
                catch(e){
                      try{ //Firefox, Mozilla, Opera, etc.
                        xmlDoc = document.implementation.createDocument("","",null);
                        return xmlDoc;
                    }
                      catch(e) {alert(e.message)}
                }
            }
            var file;
            function readPeoplesXML(fileName){
                try{
    file = fileName;
                    xmlDoc = getXMLDoc();
                    xmlDoc.async = false;
                    xmlDoc.load(fileName);
                    var root = xmlDoc.getElementsByTagName("peoples")[0];
                    
                    var table = document.getElementById("table");
                    var peopleList = root.getElementsByTagName("people");
                    for(i = 0;i < peopleList.length;i ++){
                        var people = peopleList[i];
                        var row = table.insertRow();
                        
                        var name = row.insertCell();
                        var age = row.insertCell();
                        
                        name.setAttribute("align","center");
                        name.innerHTML = "<input type='text' size='5' id='name"+i
                                       + "' value='"+people.getElementsByTagName("name")[0].childNodes[0].nodeValue
                                       + "' onchange='save(this)'/>";
                                       
                        age.setAttribute("align","center");
                        age.innerHTML = "<input type='text' size='5' id='age"+i
                                      + "' value='"+people.getElementsByTagName("age")[0].childNodes[0].nodeValue
                                      + "' onchange='save(this)'/>";
                    }
                }
                catch(e) {alert(e.message)}
            }
            
            function save(comt){
                xmlDoc = getXMLDoc();
    xmlDoc.async = false;
    xmlDoc.load(file);
    var root = xmlDoc.getElementsByTagName("peoples")[0];
    var peopleList = root.getElementsByTagName("people");

    if(/(name|age)(\d+)/.test(comt.id)){
    var tag = RegExp.$1;
    var row = parseInt(RegExp.$2);
    peopleList[row].getElementsByTagName(tag)[0].childNodes[0].nodeValue = comt.value;

    xmlDoc.save(file);
    }
            }
        </script>
      </head>
      
      <body>
        <table id="table">
            <tr>
                <td>文件路径:</td>
                <td><input type="file" onchange="readPeoplesXML(this.value);" size="10"></td>
            </tr>
            <tr><td colspan="2">&nbsp;</td></tr>
            <tr>
                <th>姓名</th>
                <th>年龄</th>
            </tr>
        </table>
      </body>
    </html>
      

  6.   

    Permission denied,ls大神报这个错怎么处理啊,xml的save以前也用过就是一直报这个错
      

  7.   


    这个错是权限问题啊,  你看看我提的问题,, 
    要把后缀.html改成.hta