js 对XML文件的保存与读取
一、保存(在前端用js创建xml格式)
function exportToXml(jsonStr){
var obj = eval('('+ jsonStr + ')');
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
//创建两条处理指令
var newPI=xmlDoc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"");
xmlDoc.appendChild(newPI);
//创建根元素
var documentElement=xmlDoc.createElement("root");
xmlDoc.appendChild(documentElement);
//创建CDATA
//var newCD=xmlDoc.createCDATASection("This is a CDATASection node");
//xmlDoc.documentElement.appendChild(newCD);
var row=xmlDoc.createElement("row");
var task=xmlDoc.createElement("Task");
task.setAttribute("TaskID",obj.AJGUID);
var aj_dj_guid=xmlDoc.createElement("AJ_DJ_GUID");
aj_dj_guid.setAttribute("name", "案件编号");
var taskname=xmlDoc.createElement("TaskName");
taskname.setAttribute("name", "任务名称");
var aj_mc=xmlDoc.createElement("AJ_MC");
aj_mc.setAttribute("name", "案件名称");
var aj_dd=xmlDoc.createElement("AJ_DD");
aj_dd.setAttribute("name", "案件地点");
var sfhcwc=xmlDoc.createElement("SFHCWC");
sfhcwc.setAttribute("name", "是否核查完成");
var hcsj=xmlDoc.createElement("HCSJ");
hcsj.setAttribute("name", "核查时间");
var refpointx=xmlDoc.createElement("RefPointX");
refpointx.setAttribute("name", "巡查地点X坐标");
var refpointy=xmlDoc.createElement("RefPointY");
refpointy.setAttribute("name", "巡查地点Y坐标");
var taskdesc=xmlDoc.createElement("TaskDesc");
taskdesc.setAttribute("name", "任务说明");
//添加子元素
task.appendChild(aj_dj_guid);
task.appendChild(taskname);
task.appendChild(aj_mc);
task.appendChild(aj_dd);
task.appendChild(sfhcwc);
task.appendChild(hcsj);
task.appendChild(refpointx);
task.appendChild(refpointy);
task.appendChild(taskdesc);
//创建text节点,作为元素的内容
var aj_dj_guidtext=xmlDoc.createTextNode('');
var tasknametext=xmlDoc.createTextNode('');
var aj_mctext=xmlDoc.createTextNode('');
var aj_ddtext=xmlDoc.createTextNode('');
var sfhcwctext=xmlDoc.createTextNode('');
var hcsjtext=xmlDoc.createTextNode('');
var refpointxtext=xmlDoc.createTextNode('');
var refpointytext=xmlDoc.createTextNode('');
var taskdesctext=xmlDoc.createTextNode('');
//为元素赋值
aj_dj_guid.appendChild(aj_dj_guidtext);
taskname.appendChild(tasknametext);
aj_mc.appendChild(aj_mctext);
aj_dd.appendChild(aj_ddtext);
sfhcwc.appendChild(sfhcwctext);
hcsj.appendChild(hcsjtext);
refpointx.appendChild(refpointxtext);
refpointy.appendChild(refpointytext);
taskdesc.appendChild(taskdesctext);
row.appendChild(task);//添加到row元素中
var project=xmlDoc.createElement("Project");
var aj_dj_guid_project=xmlDoc.createElement("AJ_DJ_GUID");
var xzqdm=xmlDoc.createElement("XZQDM");
var ajmc=xmlDoc.createElement("AJMC");
var bz=xmlDoc.createElement("BZ");
//添加子元素
project.appendChild(aj_dj_guid_project);
project.appendChild(xzqdm);
project.appendChild(ajmc);
project.appendChild(bz);
//创建text节点,作为元素的内容
var aj_dj_guid_projecttext=xmlDoc.createTextNode(obj.AJGUID);
var xzqdmtext=xmlDoc.createTextNode('');
var ajmctext=xmlDoc.createTextNode(obj.DKMC);
var bztext=xmlDoc.createTextNode('');
//为元素赋值
aj_dj_guid_project.appendChild(aj_dj_guid_projecttext);
xzqdm.appendChild(xzqdmtext);
ajmc.appendChild(ajmctext);
bz.appendChild(bztext);
var ajdks=xmlDoc.createElement("AJDKS");
ajdks.setAttribute("count", "1");
var ajdk=xmlDoc.createElement("AJDK");
var attribute=xmlDoc.createElement("Attribute");
var dkbh=xmlDoc.createElement("DKBH");
var dkmc=xmlDoc.createElement("DKMC");
var tdyt=xmlDoc.createElement("TDYT");
var dkmj=xmlDoc.createElement("DKMJ");
//添加子元素
attribute.appendChild(dkbh);
attribute.appendChild(dkmc);
attribute.appendChild(tdyt);
attribute.appendChild(dkmj);
//创建text节点,作为元素的内容
var dkbhtext=xmlDoc.createTextNode('');
var dkmctext=xmlDoc.createTextNode(obj.DKMC);
var tdyttext=xmlDoc.createTextNode('');
var dkmjtext=xmlDoc.createTextNode('');
//为元素赋值
dkbh.appendChild(dkbhtext);
dkmc.appendChild(dkmctext);
tdyt.appendChild(tdyttext);
dkmj.appendChild(dkmjtext);
ajdk.appendChild(attribute);//添加到ajdk元素中
var shape=xmlDoc.createElement("Shape");
for(i=0;i<obj.PointNumber;i++){
var point=xmlDoc.createElement("Point");
point.setAttribute("NO", ""+(i+1)+"");
point.setAttribute("X", ""+obj.SHAPE[i].X+"");
point.setAttribute("Y", ""+obj.SHAPE[i].Y+"");
//添加子元素
shape.appendChild(point);
}
ajdk.appendChild(shape);//添加到ajdk元素中
var appendix=xmlDoc.createElement("Appendix");
ajdk.appendChild(appendix);//添加到ajdk元素中
var appendixtext=xmlDoc.createTextNode('')
appendix.appendChild(appendixtext);
ajdks.appendChild(ajdk);//添加到ajdks元素中
project.appendChild(ajdks);//添加到project元素中
row.appendChild(project);//添加到row元素中
xmlDoc.documentElement.appendChild(row);
//alert(xmlDoc.xml);
xmlDoc.save("D:\\"+obj.DKMC+".xml");
alert("保存到【D:\\"+obj.DKMC+".xml】成功!");
}
二、保存(在后台组成xml格式字符串传到前端)
1、后台flex代码
private function expertCMJFYWXML():void{
var ajmc:String = this.ajmctxt.text;
if(ajmc == "请先填写案件名称"){
ajmc = "临时案件";
}
var pointNunber:int = 0;
var points:Array = null;
var pnt:MapPoint = null;
var guid:String = UIDUtil.createUID();
var resultXml = "<?xml version='1.0' encoding='utf-8' standalone='yes'?><root><row>" +
"<Task TaskID='"+guid+"'><AJ_DJ_GUID name='案件编号'></AJ_DJ_GUID><TaskName name='任务名称'></TaskName>" +
"<AJ_MC name='案件名称'></AJ_MC><AJ_DD name='案件地点'></AJ_DD><SFHCWC name='是否核查完成'></SFHCWC><HCSJ name='核查时间'></HCSJ>" +
"<RefPointX name='巡查地点X坐标'></RefPointX><RefPointY name='巡查地点Y坐标'></RefPointY><TaskDesc name='任务说明'>" +
"</TaskDesc></Task><Project><AJ_DJ_GUID>"+guid+"</AJ_DJ_GUID><XZQDM></XZQDM><AJMC>"+ajmc+"</AJMC><BZ></BZ>" +
"<AJDKS count='1'><AJDK><Attribute><DKBH></DKBH><DKMC>"+ajmc+"</DKMC><TDYT></TDYT><DKMJ></DKMJ></Attribute><Shape>";
if(this._arrPoints != null && _arrPoints.length>0){
for(var i:int = 0; i<_arrPoints.length;i++){
points = _arrPoints[i];
if(points!=null && points.length>0){
for (var j:int=0; j<points.length-1; j++){
pointNunber = j+1;
pnt = MapPoint(points[j]);
resultXml += "<Point NO='"+pointNunber+"' X='"+pnt.y.toFixed(4)+"' Y='"+pnt.x.toFixed(4)+"'/>";
}
}
}
}
resultXml +="</Shape><Appendix></Appendix></AJDK></AJDKS></Project></row></root>";
if(pointNunber >= 3){//是面状图形
callJsToExportXML(resultXml);
}
}
public static function callJsToExportXML(rsXml:String):void {
var f:String = "exportToXml";
var rs:String = ExternalInterface.call(f,rsXml);
if (rs == "fail"){
// promptMessage("导出Excel失败!",this);
}
}
2.1、前端代码(直接保存到本地)
function exportToXml(resultXml){
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(resultXml);
var ajmc = xmlDoc.getElementsByTagName("AJMC")[0].childNodes[0].text;
xmlDoc.save("D:\\"+ajmc+".xml");
alert("保存到【D:\\"+ajmc+".xml】成功!");
}
2.2弹窗选择保存路径
function exportToXml(resultXml){
try {
var Message = "\u8bf7\u9009\u62e9\u6587\u4ef6\u5939"; //选择框提示信息
var Shell = new ActiveXObject("Shell.Application");
var Folder = Shell.BrowseForFolder(0, Message, 64, 17); //起始目录为:我的电脑
//var Folder = Shell.BrowseForFolder(0, Message, 0); //起始目录为:桌面
if (Folder != null) {
Folder = Folder.items(); // 返回 FolderItems 对象
Folder = Folder.item(); // 返回 Folderitem 对象
Folder = Folder.Path; // 返回路径
if (Folder.charAt(Folder.length - 1) != "\\") {
Folder = Folder + "\\";
}
if(Folder != "" && Folder != "undefined"){
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(resultXml);
var ajmc = xmlDoc.getElementsByTagName("AJMC")[0].childNodes[0].text;
var filepath = Folder+ajmc+".xml";
var fso=new ActiveXObject("Scripting.FileSystemObject");
if(fso.FileExists(filepath)){
if(confirm('文件已存在,要替换吗?')){//选择是
xmlDoc.save(filepath);
}
}else{
xmlDoc.save(filepath);
}
}
}
}
catch (e) {
alert(e.message);
}
}
三、读取
function importXmlCoord(filePath){
try{
if(window.ActiveXObject) {
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false"
xmlDoc.load(filePath);
var points = xmlDoc.documentElement.getElementsByTagName("Point");
var coordStr = "1,"+points.length+",";//只有一个圈(不含多圈地)
for(i=0;i<points.length;i++){
var no=points[i].getAttribute("NO");
var x=points[i].getAttribute("X");
var y=points[i].getAttribute("Y");
var tempI = y.indexOf(".");
var tempY = "";
if (tempI > 0){
tempY = y.substring(0,tempI); //y坐标整数位
}else{
tempY = yCoords;
}
if(isDegreeZone == "0"){
if (tempY.length == 8){ //y坐标整数位为8,则去掉带号2位
tempY = yCoords.substring(2,y.length);
}else{
tempY = y;
}
}else{
tempY = y;
}
coordStr += no+","+x+","+y+",";
}
coordStr += "0,0,0,1,";
return coordStr;
}
}catch(e){
alert("导入XML格式坐标失败,请检查格式是否正确。");
}
}
js 对XML文件的保存与读取的更多相关文章
- JS解析XML文件和XML字符串
JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...
- matlab学习笔记4--MAT文件的保存和读取
一起来学matlab-matlab学习笔记4 数据导入和导出_1 MAT文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- 微信Accesstoken通过xml文件方式保存
//获取accessToken public static AccessToken GetAccessToken() { string AppID = JobBase.GetConfParamValu ...
- 【转】以XML文件方式保存用户数据——2013-08-25 22
正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault.它是cocos2d-x用来存取基本数据类型用的.保存为XML文件格式. 主要方法:(和java的map很 ...
- js操作XML文件兼容IE与FireFox
最近项目中用到了xml,需求是用户安装产品时先把一系列的数据保存到xml文件中,当执行到最后一步时才写入数据库,这样最大限度的减少了数据库的访问,于是不得不纠结在各浏览器的兼容性的问题(悲哀啊.... ...
- .net操作xml文件(新增.修改,删除,读取) 转
今天有个需求需要操作xml节点.突然见遗忘了许多.上网看了些资料.才整出来.脑袋真不够用.在这里把我找到的资料共享一下.方便以后使用.本文属于网摘/ 1 一.简单介绍2 using System.Xm ...
- 项目常用解决方案之SystemSetting.xml文件的修改与读取
Winform及WPF项目中经常会用到类似SystemSetting.xml等类似的文件用于保存CLIENT的数据,比如登录过的用户名或密码以及其他设置.所以就想到一个解决方法,可以用到所有有此需求的 ...
- Winform中对xml文件进行保存时空白节点自动换行问题的解决
场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...
随机推荐
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
利用编辑距离(Edit Distance)计算两个字符串的相似度 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可 ...
- GDAL库中WFS服务中含有中文不能获取数据的问题
GDAL库中目前提供了对WFS服务发布的数据进行获取,目前发现对于中文的服务名称或者图层名为中文,GDAL不能正确识别.通过调试发现,其原因有下面两点: 1.输入的URL路径没有使用UTF8编码而从网 ...
- Android开发技巧——TextView加载HTML的图片及代码显示问题
前几天在做一个Gradle用户指南的应用程序,使用的是TextView来加载HTML内容(至于为什么不用WebView,我也没有认真使用并比较过,也许以后会换吧),其中遇见了一些纠结的问题,所幸主要的 ...
- shell sed过滤器详解
1. Sed简介sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中 ...
- 在Windows下搭建Gitlab服务器
一.GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类 ...
- unity使用UGUI创建摇杆
1.现在unity做一个项目,各种插件各种包,于是项目资源就无限变大了,其实一些简单的功能可以自己写,这里就是试着使用UGUI编写一个摇杆功能 2.脚本如下: using UnityEngine; u ...
- 【Unity插件】LitJson杂谈
距离上一次更新博客已有一段时间了,一实习就懒了,嘿嘿.这次谈一下在实习里新碰到的一个Unity插件--LitJson(也可以去官网下载最新版). 开场白 LitJson是一个开源项目,比较小巧轻便,安 ...
- 【翻译】了解ASP.NET MVC中的Ajax助手
原文:Understanding AJAX Helpers in ASP.NET MVC 作者: Shailendra Chauhan works as Software Analyst at rep ...
- PLSQL WEBSERVICES 发布
一. 在Oracle EBS二次开发中,PL/SQL程序是开发人员使用频率最高的开发语言,同时也是大家最容易掌握的工具之一了,而我们也很希望将自己编写的PL/SQL程序发布为Web服务来提供给 ...
- MTK如何烧录IMEI码(俗称串号)
先介绍一下使用环境 主控:MT6582VX android版本:4.4.2 操作系统:windows XP SN烧录工具:SN_Write_tool_exe_v2.1420.00 首先介绍一下IMEI ...