Javascript 读取xml文件,修改值/添加元素/属性,并如何保存xml?
使用javascript,我想从磁盘读取xml文件,修改值/添加元素/属性,并将xml保存回磁盘 这里有人知道我能找到IE和Firefox的例子吗?我已经准备好阅读示例,现在改变值就是问题所在Javascript 读取xml文件,修改值/添加元素/属性,并如何保存xml?,javascript,xml,Javascript,Xml,使用javascript,我想从磁盘读取xml文件,修改值/添加元素/属性,并将xml保存回磁盘 这里有人知道我能找到IE和Firefox的例子吗?我已经准备好阅读示例,现在改变值就是问题所在 谢谢假设您试图从浏览器而不是node.js读取和写入磁盘, 第一步是使用file类型的input标记访问文件系统 <!DOCTYPE html> <head> <meta charset="UTF-8"> </head> <body> &
谢谢假设您试图从浏览器而不是node.js读取和写入磁盘, 第一步是使用
file
类型的input
标记访问文件系统
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
</head>
<body>
<input type="file" id="input" accept="text/xml">
<script src="script.js"></script>
</body>
将blob解析为元素树的方法不止一种。
在这里,我利用了浏览器解析HTTP请求中的xml文档这一事实
function blobToDocument(blob, callback) {
const url = URL.createObjectURL(blob);
const request = new XMLHttpRequest();
request.open('Get', url);
request.responseType = 'document';
request.addEventListener('load', () => {
callback(request.response);
});
request.send();
}
解析blob之后,我们可以像处理DOM树一样处理它
function editDocument(document) {
const element = document.createElement('editor');
element.textContent = 'JavaScript';
document.firstChild.appendChild(element);
return document;
}
为了将文件保存到磁盘,我们需要反转解析过程,
将元素树转换回字符串
function documentToString(document) {
const serializer = new XMLSerializer();
return serializer.serializeToString(document);
}
唯一剩下的就是将文件发送回磁盘。
为了实现这一点,我们可以在带有修改文件的链接上触发单击事件
function download(string, mime) {
const blob = new Blob([string], { type: mime });
const a = document.createElement('a');
const url = URL.createObjectURL(blob);
a.href = url;
a.download = 'document.xml';
a.click();
}
这是完整的代码
const input=document.querySelector(“#input”);
input.addEventListener('change',()=>{
const file=input.files.item(0);
blobToDocument(文件,(xmlDocument)=>{
editDocument(xmlDocument);
下载(documentToString(xmlDocument),“text/xml”);
});
});
函数blobToDocument(blob,回调){
const url=url.createObjectURL(blob);
const request=new XMLHttpRequest();
打开('Get',url);
request.responseType='document';
request.addEventListener('load',()=>{
回调(请求.响应);
});
request.send();
}
功能编辑文档(文档){
常量元素=document.createElement('editor');
element.textContent='JavaScript';
document.firstChild.appendChild(元素);
归还文件;
}
函数documentToString(文档){
const serializer=新的XMLSerializer();
返回serializer.serializeToString(文档);
}
函数下载(字符串、mime){
constblob=newblob([string],{type:mime});
常量a=document.createElement('a');
const url=url.createObjectURL(blob);
a、 href=url;
a、 下载='document.xml';
a、 单击();
}
function download(string, mime) {
const blob = new Blob([string], { type: mime });
const a = document.createElement('a');
const url = URL.createObjectURL(blob);
a.href = url;
a.download = 'document.xml';
a.click();
}