一、保存(在前端用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. Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38867489,专题目录:http://blog.csdn.net/dba_huangzj ...

  2. UNIX环境高级编程——UNIX基础知识

    1.用户在登陆linux系统时,先键入登录名,然后键入口令.系统在其口令文件(通常是/etc/passwd文件)中查看登录名.口令文件中的登陆项由7个以冒号分隔的字段组成,它们是:登录名.加密口令.数 ...

  3. (五十九)iOS网络基础之UIWebView简易浏览器实现

    [UIWebView网络浏览器] 通过webView的loadRequest方法可以发送请求显示相应的网站,例如: NSURL *url = [NSURL URLWithString:@"h ...

  4. Dynamics CRM ADFS及IFD部署后延长系统注销时间

    Dynamics CRM 部署IFD后,一段时间后登陆状态会失效,系统会提示让你重新登陆,可以通过延长失效时间来规避 在 powershell中执行如下指令 Set-ADFSRelyingPartyT ...

  5. javascript语法之函数案例练习

    需求:文本框内输入月份,弹窗提示本月天数. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  6. 【算法导论】最小生成树之Prime法

    关于最小生成树的概念,在前一篇文章中已经讲到,就不在赘述了.下面介绍Prime算法:         其基本思想为:从一个顶点出发,选择由该顶点出发的最小权值边,并将该边的另一个顶点包含进来,然后找出 ...

  7. Windows7 64位机上,OpenCV中配置CUDA,实现GPU操作步骤

    原文地址:http://blog.csdn.net/haorenka2010/article/details/24385955 按语:首先感谢http://blog.csdn.net/fengbing ...

  8. 【Qt编程】Qt学习之窗口间的相互切换

    在用Qt设计GUI时,经常要设计两个窗口之间的相互切换,即可以从一个窗口跳转到另一个窗口,然后又从另一个窗口跳转回原窗口.下面我们来介绍具体的实现方法: 工程建立及功能描述: 首先,我们建立Qt  G ...

  9. OpenCV 轮廓检测

    使用OpenCV可以对图像的轮廓进行检测.这是之前用过的代码,挺简单的,回顾一下.主要要进行以下2步操作: 1.cvThreshold():对图像进行二值化处理 2.cvFindContours(): ...

  10. 预装WIN8的电脑是GPT分区模式,无法安装WIN7

    本人的笔记本自带的是WIN8系统,现在想安装WIN7的系统,但是安装不了,提示"windows无法安装到这个磁盘.选中的磁盘采用GPT分区形式". 通过上网搜索得知WIN7一般安装 ...