为了打发闲暇时间,从3月份开始在博客里面写文章,对.net领域的粗浅认识、工作当中解决实际问题的过程、阅读技术牛人的感想、对各方面知识的总结梳理等等都被摆上台面。无奈技术理解肤浅,文字表达能力有限,写出来的东西让人提不起兴趣,纯属自娱自乐吧,权当作为自己技术积累的仓库了,嘿嘿。
下面就写点有关xml技术方面的东西,xml在我目前所负责的模块中应用很广,经常遇到对xml数据的操作。
主要有以下情形:
1.在windws服务里面调用web服务方法返回xml格式数据的字符串。
2.根据xml数据中的信息将xml数据存入数据库。
3.自己根据xml数据中的信息组织成新的xml数据存入数据库。
上述情形都涉及到如何获取xml特定节点的值,在我的项目中目前有3中方法:
1.将xml字符串转换为一个dataset,这就变成了如何得到datatable中某一行某一列值的问题,不在此讨论。
2.将xml字符串转化为XmlDocument类,根据节点名称找到节点的集合XmlNodeList,在循环集合过程中,根据节点的子节点ChildNodes的数量以及索引来找,这种方法要求对xml的数据格式非常熟悉。
3.将xml字符串转化为XmlDocument类,根据节点名称找到节点的集合XmlNodeList并结合XPath语言来找,这种方法比较灵活,所需代码也较少,需要对xml数据格式和XPath都很熟悉。
下面是几个实例:
XmlNodeList xNodeLst = doc.SelectNodes("/NewDataSet/Table1[VP_ID=" + dr["fid"].ToString() + "]/VP_ID");(得到xml数据中VP_ID节点的值等于dr["fid"].ToString()的节点名称为VP_ID节点的集合)。
string strFId = xmlQueryResult.SelectSingleNode("/NewDataSet/Table1[ID]").InnerText;(获取xml数据中节点名称为ID的节点的唯一值)。