一、保存(在前端用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. 青年菜君与小农女送菜商业模式PK

    青年菜君与小农女送菜商业模式PK   对比项 青年菜君 小农女送菜 优势 劣势 开业 2014年3月3日 2013年9月 渠道 地铁捕获用户 写字楼配送 送货 来店面自取 送货到写字楼 菜君 1.减少 ...

  2. Ajax 初步学习总结

    Ajax是什么 Ajax是(Asynchronous JavaScript And XML)是异步的JavaScript和xml.也就是异步请求更新技术.Ajax是一种对现有技术的一种新的应用,不是一 ...

  3. Linux进程-命令行参数和环境列表

    命令行参数 在C中,main函数有很多的变种,比如 main(), int main(), int main(int argc, char *argv[]), int main(int argc, c ...

  4. viewpager循环滚动和自动轮播的问题

    ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的Vie ...

  5. 数据cube的schema与sql的对应的关系

    用schema workbench 设置cube的维度结构 saiku 使用的cube,会将不同维度的查询转化为sql语句. schema中, cube的事实表和dimension表进行自然连接,具体 ...

  6. android的Devices窗口中Online显示成Offline

    这种情况几率很低,如果出现,点击Reset adb就好了.

  7. XMPP客户端库Smack

    原文博客地址:http://blog.csdn.net/chszs/article/details/41576877

  8. HBase快照

    CDH是Cloudera的完全开源分布式Apache Hadoop及相关项目(包括Apache HBase).CDH的当前版本(4.2)引入的一个HBase新特性最近加入到了主干中,允许用户对指定表进 ...

  9. 通信录列表+复杂Adapter分析

    概述 最近写论文之余玩起了github,发现有个citypicker挺不错的,高仿了美团城市选择和定位的一些功能 地址链接 效果图如下: 自己手动写了一遍优化了一些内容,学到了一些姿势,下面对其中一些 ...

  10. SQLCODE和SQLERRM .

    Oracle内置函数SQLCODE和SQLERRM是特别用在OTHERS处理器中,分别用来返回Oracle的错误代码和错误消息. OTHERS处理器应该是异常处理块中的最后的异常处理器,因为它是用来捕 ...