XML管理类
来源:互联网 发布:通关单数据查询 编辑:程序博客网 时间:2024/06/06 03:57
用于快速生成实体类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;namespace XMLControl{ /// <summary> /// XML管理类 /// </summary> public class XMLManager { public XMLManager() { } public static StringBuilder CreateModel(string xml) { StringBuilder sbuilder = new StringBuilder(); XmlDocument document = new XmlDocument(); document.LoadXml(xml); try { XmlElement ele = document.DocumentElement; List<StringBuilder> lstClass = new List<StringBuilder>(); NewMethodXml(lstClass, ele); if (lstClass.Count > 0) { StringBuilder sBuilderInit = new StringBuilder(); sBuilderInit.AppendLine("}"); lstClass.Add(sBuilderInit); } foreach (StringBuilder item in lstClass) { sbuilder.Append(item); sbuilder.AppendLine(); } } catch (Exception ex) { } return sbuilder; } /// <summary> /// /// </summary> /// <returns></returns> public static void NewMethodXml(List<StringBuilder> lstClass, XmlNode ele) { if (lstClass == null) lstClass = new List<StringBuilder>(); XmlNodeList lstXmlNode = ele.ChildNodes; if (lstXmlNode.Count > 0) { if (lstClass.Count == 0) { StringBuilder sBuilderInit = new StringBuilder(); sBuilderInit.AppendLine("using System;"); sBuilderInit.AppendLine("using System.Collections.Generic;"); sBuilderInit.AppendLine("namespace 命名空间"); sBuilderInit.AppendLine("{"); lstClass.Add(sBuilderInit); } StringBuilder sBuilder = new StringBuilder(); lstClass.Add(sBuilder); sBuilder.AppendLine(" [Serializable]"); sBuilder.AppendFormat(" public partial class {0}", ele.Name); sBuilder.AppendLine(); sBuilder.AppendLine(" {"); foreach (XmlNode item in lstXmlNode) { XmlNodeList lst = ele.SelectNodes(item.Name); if (lst.Count > 1) { string ww = string.Format(" public List<{0}> {1}", item.Name, ele.Name); if (sBuilder.ToString().Contains(ww)) continue; sBuilder.AppendFormat(" [System.Xml.Serialization.XmlArrayItemAttribute(\"{0}\", IsNullable = false)]", item.Name); sBuilder.AppendLine(); sBuilder.AppendFormat(ww); sBuilder.Append(" { set; get; }"); sBuilder.AppendLine(); NewMethodAttribute(lstClass, item); } else { if (ele.Name == "feeitemarray") { } XmlNodeList lst1 = null; if (item.FirstChild != null && !(item.FirstChild is XmlText)) lst1 = item.SelectNodes(item.FirstChild.Name); if (item.ChildNodes.Count > 1) { if (lst1 != null && lst1.Count > 1) { string ww = string.Format(" public List<{0}> {1}", item.FirstChild.Name, item.Name); if (sBuilder.ToString().Contains(ww)) continue; sBuilder.AppendFormat(" [System.Xml.Serialization.XmlArrayItemAttribute(\"{0}\", IsNullable = false)]", item.FirstChild.Name); sBuilder.AppendLine(); sBuilder.AppendFormat(ww); sBuilder.Append(" { set; get; }"); sBuilder.AppendLine(); NewMethodAttribute(lstClass, item.FirstChild); } else { sBuilder.AppendFormat(" public {0} {0}", item.Name); sBuilder.Append(" { set; get; }"); sBuilder.AppendLine(); NewMethodXml(lstClass, item); } } else { sBuilder.AppendFormat(" public string {0}", item.Name); sBuilder.Append(" { set; get; }"); sBuilder.AppendLine(); } } } sBuilder.AppendLine(" }"); } } /// <summary> /// 生成类(节点属性) /// </summary> /// <param name="lstClass"></param> /// <param name="ele"></param> public static void NewMethodAttribute(List<StringBuilder> lstClass, XmlNode ele) { StringBuilder sBuilder = new StringBuilder(); lstClass.Add(sBuilder); sBuilder.AppendLine(" [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]"); sBuilder.AppendFormat(" public class {0}", ele.Name); sBuilder.AppendLine(); sBuilder.AppendLine(" {"); foreach (XmlAttribute item in ele.Attributes) { sBuilder.AppendLine(" [System.Xml.Serialization.XmlAttributeAttribute()]"); sBuilder.AppendFormat(" public string {0}", item.Name); sBuilder.Append(" { set; get; }"); sBuilder.AppendLine(); } sBuilder.AppendLine(" }"); } private static void NewMethod(StringBuilder sbuilder, XmlNode ele) { XmlNodeList lstXmlNode = ele.ChildNodes; foreach (XmlNode item in lstXmlNode) { XmlNodeList lstSubXmlNode = item.SelectNodes(item.Name); if (lstSubXmlNode.Count == 0) { //NewMethod(sbuilder, item); XmlNodeList lstSubNode = item.ChildNodes; XmlNodeList lstSubNode2 = item.ParentNode.SelectNodes(item.Name); if (lstSubNode.Count > 1 || lstSubNode2.Count > 1) { sbuilder.AppendLine(item.Name + " =>0 类"); foreach (XmlNode info in lstSubNode) { NewMethod(sbuilder, info); } } else { sbuilder.AppendLine(item.Name + "=>属性"); } } else { sbuilder.AppendLine(item.Name + "=>" + lstSubXmlNode.Count); } } if (lstXmlNode.Count == 0) { if (!(ele is XmlText)) sbuilder.AppendLine(ele.Name + "=>:0"); } } }}
0 0
- XML管理类
- Java xml 图书管理系统-Book类
- Java xml 图书管理系统-BookUtil类
- Java xml 图书管理系统-Test类
- Xml与知识管理
- openCMS的XML管理
- 管理报文碎片(XML)
- xml 学生管理系统
- XML管理实例
- 频道管理xml
- XML 安全: XML 密钥管理规范
- Java xml 图书管理系统-XML
- XML词汇的版本管理
- 管理 XML 数据: 标签 URI
- web.xml管理的内容
- 通过配置xml文件的方式将Classpath下的类交给Sping容器管理
- 自己动手设计代码编辑器——(六)自己写XML管理类
- 快捷键XML管理和事件管理小结(实例)
- NEON指令集
- linux下软连接和硬链接的创建
- 建立maven工程
- 深度学习——NMS(非极大抑制)
- Could not get lock /var/lib/apt/lists/lock
- XML管理类
- VC2010升级到VC2015遇到问题及解决办法
- sitemesh应用
- BZOJ 3173: [Tjoi2013]最长上升子序列
- C++之类的继承
- Spring ------ 注解详解
- 微信小程序开发:e代驾Lite小程序分析
- C++之虚函数
- 通过配置的容器过滤