XML多层复杂结构转Dictionary<String,Object>类型
来源:互联网 发布:什么是网站数据接口 编辑:程序博客网 时间:2024/04/30 04:51
*XML多层复杂结构转Dictionary<String,Object>类型
将XML字符串转换为泛型Dictionary
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;using System.Web.Script.Serialization;using System.Collections;namespace XMLhead{ class XMLConvert { /** * XML多层复杂结构转Dictionary<String,Object>类型 * * 将XML字符串转换为泛型 * */ public static Dictionary<String,Object> ReadXMLToDictionary(String XmlStr) { XmlDocument _XmlDoc = new XmlDocument(); _XmlDoc.LoadXml(XmlStr); Dictionary<String, Object> XmlObject = new Dictionary<String, Object>(); if (_XmlDoc.DocumentElement.ChildNodes.Count <= 0) { throw new Exception("XML节点错误{节点值为0}!"); } if (XmlNodeRepeat(_XmlDoc.DocumentElement.ChildNodes)) { XmlObject.Add(_XmlDoc.DocumentElement.Name, XMLList(_XmlDoc.DocumentElement.ChildNodes)); } else { foreach (XmlNode TempObject in _XmlDoc.DocumentElement.ChildNodes) { if (TempObject.ChildNodes.Count>1) { if (XmlNodeRepeat(TempObject.ChildNodes)) { XmlObject.Add(TempObject.Name, XMLList(TempObject.ChildNodes)); } else { XmlObject.Add(TempObject.Name, ObjectToDictionary(TempObject.ChildNodes)); } } else { XmlObject.Add(TempObject.Name, TempObject.InnerText); } } } return XmlObject; } /** * * 例表处理 * */ private static ArrayList XMLList(XmlNodeList NodeObjects) { ArrayList XmlDictionary = new ArrayList(); foreach (XmlNode TempObject in NodeObjects) { Dictionary<String, Object> XmlListObject = new Dictionary<String, Object>(); XmlListObject.Add(TempObject.Name, ObjectToDictionary(TempObject.ChildNodes)); XmlDictionary.Add(XmlListObject); } return XmlDictionary; } /** * * * 单节点处理 * */ private static Dictionary<String, Object> ObjectToDictionary(XmlNodeList NodeObjects) { Dictionary<String, Object> XmlObject = new Dictionary<String, Object>(); foreach (XmlNode TempObject in NodeObjects) { if (TempObject.ChildNodes.Count > 1) { if (XmlNodeRepeat(TempObject.ChildNodes)) { XmlObject.Add(TempObject.Name, XMLList(TempObject.ChildNodes)); } else { XmlObject.Add(TempObject.Name, ObjectToDictionary(TempObject.ChildNodes)); } } else { XmlObject.Add(TempObject.Name, TempObject.InnerText); } } return XmlObject; } /** * * 节点重复检测 * * */ private static Boolean XmlNodeRepeat(XmlNodeList ChildNodeObjects) { if (ChildNodeObjects.Count ==1 || ChildNodeObjects.Count == 0) { return false; } Dictionary<String, Int32> TempDictionary = new Dictionary<String, Int32>(); foreach (XmlNode TempNode in ChildNodeObjects) { if(!TempDictionary.ContainsKey(TempNode.Name.ToString())){ TempDictionary.Add(TempNode.Name.ToString(),0); }else if(TempDictionary.ContainsKey(TempNode.Name.ToString())){ TempDictionary[TempNode.Name.ToString()]++; } } if (ChildNodeObjects.Count == TempDictionary.Count) { return false; } else if (TempDictionary.Count == 1 && ChildNodeObjects.Count >1) { return true; } throw new Exception("XmlNode节点为无规则例表!"); } }}
0 0
- XML多层复杂结构转Dictionary<String,Object>类型
- [Object Pascal] String类型结构详解
- Dictionary 和 List<Dictionary<string, object>>
- xml映射Map<String, String>和Map<String, Object>类型
- java中Object类型转String类型
- WCF 传输Dictionary<string, object>数据问题
- List<Dictionary<string,object>> 排序测试
- android Object 转 string 和long类型
- String[] Object类型转化
- 多层json转xml
- python内置类型(list,dictionary, tuple , string, )
- object类型转string类型(的三种方法)
- java解析String类型t复杂xml,多级节点,最好的例子
- Dictionary Object
- Object Dictionary
- Document Object To XML String
- AS3 中string转xml类型
- JavaScript中的String类型和Object类型
- 数学学学习之范数和距离的关系
- 关于eclipse部署的项目用tomcat直接跑出现:startup failed due to previous errors
- 物体平移
- 数据库到底用不用外键
- redis 队列
- XML多层复杂结构转Dictionary<String,Object>类型
- Java泛型
- c# 在task中使用Dbcontext提示“ObjectDisposedException”
- Multipart/form-data POST文件上传详解
- WebStorm 2016.3中如何安装及使用eslint
- sscanf 其实很强大
- android 电容屏(四):驱动调试之驱动程序分析篇 -- FocalTech
- Android中BaseAdapter使用总结(imooc笔记)
- 每日英语