xml 封装与解析(javascript和C#中)


Posted in Javascript onJuly 26, 2009

1.xml的解析(javascript中):
具体代码如下,解析的结果root为Dom树。

if (window.ActiveXObject){ 
var doc=new ActiveXObject("Microsoft.XMLDOM"); 
doc.async="false"; 
doc.loadXML(strXml); 
}else{ 
var parser=new DOMParser(); 
var doc=parser.parseFromString(strXml,"text/xml"); 
} 
var root = doc.documentElement;

2.xml的封装(javascript中):
(该代码为将页面中table封装为一个xml)
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.loadXML("<Rows></Rows>"); 
var root = xmlDoc.documentElement; 
for(var index=0;index<this.table.rows.length;index++) 
{ 
var row = xmlDoc.createElement("Row"); 
for(var colIndex = 0;colIndex<this.table.rows[index].cells.length;colIndex++) 
{ 
var currentCell = this.table.rows[index].cells[colIndex]; 
var cell = xmlDoc.createElement("Cell"); 
cell.setAttribute("Name",this.table.columns[colIndex].id); 
cell.setAttribute("Value",currentCell.value); 
row.appendChild(cell); 
} 
root.appendChild(row); 
}

对于ajax实现前台xml到后台的传输可以参考jquery实现xml的前后台传输。
3.xml的封装:(C#)
具体方法如下,
XmlDocument doc = new XmlDocument(); 
doc.LoadXml("<Data></Data>"); 
XmlElement root = doc.DocumentElement; 
root.SetAttribute("Name", name);//此处name为该xml赋一个Name属性 
foreach (ListObject Object in ListResult)//其中listResult为一个由listObject对象组成的list表,其中object为listResult的一个元素,他是ListObject型的 
{ 
XmlElement item = doc.CreateElement("Item"); 
item.SetAttribute("Key", Object.key);//其中key,value分别为Object的属性元素 
item.SetAttribute("Value", Object.Value); 
root.AppendChild(item); 
}

最后生成的root即为xml.
4.xml的解析(c#)
XmlDocument doc = new XmlDocument(); 
try 
{ 
doc.Load(Request.InputStream);//此处加载request请求的xml流 
} 
catch (Exception e) 
{} 
XmlNodeList rowList; 
rowList = doc.DocumentElement.SelectNodes("Row"); 
List<ObjectVO> voList = new List<ObjectVO>(rowList.Count);//初始化一个List,改list中组成元素是ObjectVO对象 
foreach (XmlNode row in rowList) 
{ 
ObjectVO VO = new ObjectVO(); 
VO.VOElement1 = Convert.ToInt32((row.SelectSingleNode("Cell[@Name='VOElement1']") as XmlElement).GetAttribute("Value"));//vo中元素VOElement1为int型 
VO.VOElement2 = (row.SelectSingleNode("Cell[@Name='VOElement2']") as XmlElement).GetAttribute("Value").ToString();//或取xml中cell元素中name为VOElement2的value属性的值 
VO.VOElement3 = (row.SelectSingleNode("Cell[@Name='VOElement3']") as XmlElement).GetAttribute("Value").ToString(); 
voList.Add(VO); 
} 
return voList;
Javascript 相关文章推荐
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
JavaScript获取页面上某个元素的代码
Mar 13 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
js判断浏览器类型及设备(移动页面开发)
Jul 30 Javascript
JS实现浏览器状态栏显示时间的方法
Oct 27 Javascript
AngularJS ng-bind-template 指令详解
Jul 30 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
Vue-resource实现ajax请求和跨域请求示例
Feb 23 Javascript
Vue封装Swiper实现图片轮播效果
Feb 06 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
Oct 29 Javascript
JavaScript 捕获窗口关闭事件
Jul 26 #Javascript
jquery tools之tooltip
Jul 25 #Javascript
jquery tools之tabs 选项卡/页签
Jul 25 #Javascript
jquery JSON的解析方式
Jul 25 #Javascript
jqPlot Option配置对象详解
Jul 25 #Javascript
jqPlot jquery的页面图表绘制工具
Jul 25 #Javascript
IE DOM实现存在的部分问题及解决方法
Jul 25 #Javascript
You might like
浅谈PHP语法(1)
2006/10/09 PHP
谈谈PHP语法(4)
2006/10/09 PHP
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
python求解水仙花数的方法
2015/05/11 Python
Python算法应用实战之队列详解
2017/02/04 Python
Django中url的反向查询的方法
2018/03/14 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
外国人聘用意向书
2014/04/01 职场文书
灰雀教学反思
2014/04/28 职场文书
华清池导游词
2015/02/02 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
redis 存储对象的方法对比分析
2021/08/02 Redis