一、保存(在前端用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文件的保存与读取的更多相关文章

  1. JS解析XML文件和XML字符串

    JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...

  2. matlab学习笔记4--MAT文件的保存和读取

    一起来学matlab-matlab学习笔记4 数据导入和导出_1 MAT文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...

  3. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  4. 微信Accesstoken通过xml文件方式保存

    //获取accessToken public static AccessToken GetAccessToken() { string AppID = JobBase.GetConfParamValu ...

  5. 【转】以XML文件方式保存用户数据——2013-08-25 22

    正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault.它是cocos2d-x用来存取基本数据类型用的.保存为XML文件格式. 主要方法:(和java的map很 ...

  6. js操作XML文件兼容IE与FireFox

    最近项目中用到了xml,需求是用户安装产品时先把一系列的数据保存到xml文件中,当执行到最后一步时才写入数据库,这样最大限度的减少了数据库的访问,于是不得不纠结在各浏览器的兼容性的问题(悲哀啊.... ...

  7. .net操作xml文件(新增.修改,删除,读取) 转

    今天有个需求需要操作xml节点.突然见遗忘了许多.上网看了些资料.才整出来.脑袋真不够用.在这里把我找到的资料共享一下.方便以后使用.本文属于网摘/ 1 一.简单介绍2 using System.Xm ...

  8. 项目常用解决方案之SystemSetting.xml文件的修改与读取

    Winform及WPF项目中经常会用到类似SystemSetting.xml等类似的文件用于保存CLIENT的数据,比如登录过的用户名或密码以及其他设置.所以就想到一个解决方法,可以用到所有有此需求的 ...

  9. Winform中对xml文件进行保存时空白节点自动换行问题的解决

    场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...

随机推荐

  1. 一键安装gitlab7在rehl6.4上

    一键安装gitlab7在rehl6.4上 参考原文: http://blog.csdn.net/ubuntu64fan/article/details/38367579 1 关于gitlab7 无论如 ...

  2. html详解(三)

    7.表格标签. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  3. Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法

    对称加密 非对称加密 不可逆加密算法 根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系). 1 对称加密算法 原理 对称加密算法中,数据加密和解密 ...

  4. 关于C++程序的编码问题

    转自: http://blog.chinaunix.net/uid-26790551-id-3190813.html 我们传统的程序基本都只在Windows或只在Linux下运行,Windows程序使 ...

  5. [前端]Emmet 基本语法快查

    Emmet 是一种快速写html的语法,通过几个简单的缩写,就可以拓展成html标签,工作中写html多多少少会有一些,使用的语法都是基础语法,这里总结下最常用的几个,备查. 这个插件支持非常多的ID ...

  6. JavaScript进阶(三)常见工具(校验、通用)

    JS常见工具(校验.通用) // 姓名校验 var checkName = function(name) { // 收货人姓名校验(准则:姓名为2-4汉字) var regu = /^[\u4E00- ...

  7. App热补丁动态修复技术介绍

    安卓App热补丁动态修复技术介绍 来自qq空间团队:微信号qzonemobiledev QQ空间终端开发团队 1.背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...

  8. Android电话拦截实现以及TelephonyManager监听的取消

    由于毕业设计题目涉及到电话拦截这一块.所以鼓捣了一下.遇到了一些问题,总结一下,以免忘记,也希望能帮助其他新人们. 本篇博客目的:实现电话的拦截 会遇到的问题:android studio下AIDL的 ...

  9. 第十八篇 ANDROID的声音管理系统及服务

     声音管理系统用来实现声音的输入和输出.声音的控制和路由等功能,包括主和各种音源的音量调节.声音焦点控制,声音外设的检测和状态管理,声音源输入和输出的策略管理.音效的播放.音轨设置和播放.录音设置 ...

  10. 能量最小化初探,graphcuts能量最小化调用

    1.相对于能量函数来说,能量最小化的办法都有哪些? 梯度下降 模拟退火 图割 2.这个 跟最优化问题的求解,有什么联系跟区别呢? 基本上差不多,其实就是求出来了函数的一个最小值,我们看问题的时候不妨把 ...