LINQ模型對比全面剖析
這裡主要介紹DOM模型和LINQ模型操作XML的區別,包括介紹LINQ模型上看出XElement的重要性和使用LINQ操作XML。
下面用程式碼對比一下:
- //DOM模型
- XmlDocument doc = new XmlDocument();
- XmlElement name = doc.CreateElement("name");
- name.InnerText = "Patrick Hines";
- XmlElement phone1 = doc.CreateElement("phone");
- phone1.SetAttribute("type", "home");
- phone1.InnerText = "206-555-0144";
- XmlElement phone2 = doc.CreateElement("phone");
- phone2.SetAttribute("type", "work");
- phone2.InnerText = "425-555-0145";
- XmlElement street1 = doc.CreateElement("street1");
- street1.InnerText = "123 Main St"
- XmlElement city = doc.CreateElement("city");
- city.InnerText = "Mercer Island";
- XmlElement state = doc.CreateElement("state");
- state.InnerText = "WA";
- XmlElement postal = doc.CreateElement("postal");
- postal.InnerText = "68042";
- XmlElement address = doc.CreateElement("address");
- address.AppendChild(street1);
- address.AppendChild(city);
- address.AppendChild(state);
- address.AppendChild(postal)
- XmlElement contact = doc.CreateElement("contact");
- contact.AppendChild(name);
- contact.AppendChild(phone1);
- contact.AppendChild(phone2);
- contact.AppendChild(address);
- XmlElement contacts = doc.CreateElement("contacts");
- contacts.AppendChild(contact);
- doc.AppendChild(contacts);
- //LINQ模型
- XElement contacts =
- new XElement("contacts",
- new XElement("contact",
- new XElement("name", "Patrick Hines"),
- new XElement("phone", "206-555-0144",
- new XAttribute("type", "home")),
- new XElement("phone", "425-555-0145"
- new XAttribute("type", "work")),
- new XElement("address",
- new XElement("street1", "123 Main St"),
- new XElement("city", "Mercer Island"),
- new XElement("state", "WA"),
- new XElement("postal", "68042")
- )
- )
- );
從對比上我們也可以看出LINQ模型的簡單性。我們還可以從LINQ模型上看出XElement的重要性。使用XElement不僅可以從頭建立xml檔案,還可以使用Load的方法從檔案載入。還可以從資料庫中取出所需元素,這就要用到LINQ TO SQL的東西了,同樣可以從陣列中取出元素。操作完成後可以使用Save方法進行儲存。
下面簡單介紹一下增刪查改XML。
- //查詢
- foreach (c in contacts.Nodes()) ...{
- Console.WriteLine(c);
- }
我們看到在輸出XML元素的時候並不需要對每個元素進行強制的型別轉換,這裡C#編譯器已經做了這些事情,它會在輸出的時候呼叫每個元素的ToString()方法。
- //插入元素
- XElement mobilePhone = new XElement("phone", "206-555-0168");
- contact.Add(mobilePhone);
這裡只是很簡單的演示一些操作,至於那些複雜的操作,只要DOM模型能實現的LINQ模型就一定能實現。插入的時候還可以使用AddAfterThis和AddBeforeThis等方法,提高效率。
- //刪除元素
- contact.Element("phone").Remove();
- //刪除某一具體元素
- contact.Elements("phone").Remove();
- //刪除一組元素
- contacts.Element(contact").Element("address").RemoveContent();
- //刪除某一元素內容
- //刪除元素還可以使適用SetElement方法,把某一元素設定為null也就是刪除了這元素。
- //修改元素
- contact.Element("phone").ReplaceContent("425-555-0155");
- //這裡是修改第一個phone元素的內容
當然同樣可以使用SetElement方法,這裡才是它的用武之地。
從上面簡單的介紹我們可以清楚的看到,使用LINQ操作XML是多麼的簡單,這裡使用的C#語法,如果要是使用VB.NET還會更簡單。有一些方法在VB.NET中可以使用但是在C#中卻沒有。畢竟VB.NET是晚繫結語言,可以充分發揮它的優勢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-616543/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全面對比:天工大模型 vs 紫東太初大模型大模型
- AI模型對比AI模型
- HarmonyOS與Android的全面對比Android
- iOS Xcode全面剖析iOSXCode
- 揭祕GaussDB(for Redis):全面對比CodisRedis
- 對比剖析Swarm Kubernetes Marathon編排引擎Swarm
- 開源OCR模型對比模型
- 全面剖析 Redux 原始碼Redux原始碼
- 深度剖析分散式事務之 AT 與 XA 對比分散式
- 全面對比 Redis 和 Memcached 的 6 點區別Redis
- 五種IO模型介紹和對比模型
- Unity提交IPO申請,我們對它進行了一次全面剖析Unity
- 全面通透深入剖析工廠方法模式模式
- 全面剖析Android訊息機制原始碼Android原始碼
- 移動app測試現狀全面剖析APP
- 《WCF全面剖析》-章節內容簡介
- Linq
- vivo NEX對比OPPO Find X圖賞:誰更接近全面屏?
- 前端與後端開發中技術差異的全面對比前端後端
- 深度測評 | 五大主流多端開發框架全面對比框架
- 對於“前端狀態”相關問題,如何思考比較全面前端
- 從原始碼全面剖析 React 元件更新機制原始碼React元件
- 訊飛星火大模型 與New Bing實測對比大模型
- Lambda、Linq
- Linq用法
- 全面分析低程式碼平臺:各大熱門產品詳細對比
- 全面剖析小紅書種草/引流筆記玩法筆記
- [譯]LINQ TO SQL 介紹(定義資料模型類) – Part.2SQL模型
- espnet中的transformer和LSTM語言模型對比實驗ORM模型
- 視覺化經典模型的對比實驗總結視覺化模型
- 可用於資料庫對比評估的FURPS+模型資料庫模型
- petite-vue原始碼剖析-沙箱模型Vue原始碼模型
- Flink CheckPoint狀態點恢復與savePoint機制對比剖析-Flink牛刀小試
- MoneyPrinterPlus全面支援本地Ollama大模型大模型
- linQ基礎
- 瞭解LINQ
- linq介紹
- 重要 | Spark和MapReduce的對比,不僅僅是計算模型?Spark模型
- [go-linq]-Go的.NET LINQ式查詢方法Go