zoukankan      html  css  js  c++  java
  • 用ORM的思想操作XML文档,一个对象就搞定不要太简单。滚蛋吧!XmlDocument、XmlNode、Xml***……

      大家有没有这样的感受,一涉及XML文档操作就得百度一遍。是不是非!常!烦!。各种类型,各种方法,更别提为了找到一个节点多费劲。本来想写个XML操作的工具方法,写了两行一想既然XML文档是有规律的,如果抽象成一个树形结构的类,查找节点是不是就可以用lambda了,创建修改都是操作类,那不是好用得飞起!说干就干,经过两天打磨,终于是大功告成。系统默认的XML文件相关操作我就不吐槽了,来看看怎么飞起的吧。

      设计思路:

      写着好多啊,简单来说就是把XML标签分为两类:XmlChildTag子标签和XmlBaseTag基础标签。子标签内可以有子标签列表基础标签列表,所以一个子标签就可以表示出一个XML文件的根节点。然后一个XmlFile文件类实现XmlDocument到XmlTag标签类的互相转换查找等功能。说着太空,上图:

      1.模型定义如下。注意XmlTag是抽象类。

      

      2.文件模型XmlFile(太长,先看下基本定义就行。项目已上github,底下有链接。)

      


      进入正题,怎么飞起:

      1.创建XML文件

      结果

        

      2.读取XML文件

      结果

       3.修改内容

      结果

       4.快速获取节点(关键飞起步骤之一)(为了展示几个不同的方法看着比较长,实际完成一次查找修改也就两三行代码搞定。)

       执行前:                                        执行后:

       


      折腾了两天,总算是差不多了。核心思想就是把标签对应成树形结构的模型类,实现模型类和XmlNode的相互转换。把类的操作映射为XmlNode的操作。

      虽然代码不多,但是为了合理好用,模型改了两三次,模型好了其实就可以自由操作了,为了快速高效,加了相关快速获取方法。我……大概是……为了世界和平吧……

      需要看源码或者想改进的同学看这里https://github.com/631320085/XmlObject

         本文描述可能不是最新版,详情点击以上链接查看。 

      想用的同学还可以直接从Nuget里搜索“XmlObject” 或执行命令:Install-Package CodeFarmer.Tools.XmlObject

  • 相关阅读:
    php 3des加密 兼容JAVA 多么痛的领悟呀
    主机序和网络序
    不用递归实现无限分类数据的树形格式化
    python学习笔记之open函数的用法
    据说是百度面试题(1)
    YII+DWZ三级城市联动挂件
    wpf 报错: 在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh”。
    MVVM了解
    纪念2015年上半年
    c# 委托与事件
  • 原文地址:https://www.cnblogs.com/xianyudotnet/p/5745335.html
Copyright © 2011-2022 走看看