有这样一段代码,解析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"> </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代码。
<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"> </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代码。
求高手啊,帮忙完善一下这个保存的方法啊 : function save(comt){
alert(comt.id);
}
1.ActiveXObject("Scripting.FileSystemObject"); //IE特有,不兼容其他浏览器
2.XML对象本身的save方法,这个行不通,要进行安全设置
我只需要支持IE,w3school的方法不知道为什么Mozilla浏览器没过
这是.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)}
}
}
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"> </td></tr>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
</table>
</body>
</html>
这个错是权限问题啊, 你看看我提的问题,,
要把后缀.html改成.hta!