大家有沒有這樣的感受,一涉及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
文章列表