本篇內容介紹了“LINQ to XML是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在向大家詳細介紹LINQ to XML之前,首先讓大家了解下LINQ to Object。
LINQ to Object
MethodInfo[] methods = typeof(string).GetMethods(); var q = from t in methods where (t.Name.Length > 15) select t;
LINQ to Object主要是基于.NET框架里的Lambda表達式來實現的,因此上面的代碼運行結果等同于下面的代碼:
MethodInfo[] methods = typeof(string).GetMethods(); var q = methods .Where((method) => method.Name.Length > 15) .Select((name) => name.Name);
LINQ to XML
XElement xelem = XElement.Load(@"example.xml"); // 查詢節點名為Item,并返回它們的PartNumber屬性值的集合 IEnumerable<string> partNos = from item in xelem.Descendants("Item") Select (string)item.Attribute("PartNumber"); foreach (string str in partNos) Console.WriteLine(str);
在.NET3.5中,框架對XML的操作進行了擴展,這個擴展就是LINQ to XML。在名稱空間System.Xml.LINQ下。從以上的代碼我們可以看到增加了一個新的XElement對象。我們通過XElement.Load方法來裝載XML文檔,而不是傳統的DOM模式XmlDocument.Load。
相比較于W3C的DOM文檔結構來說,LINQ to XML為我們提供了一種更方便的創建一個XML文檔的方式
XElement contacts = new XElement("Contacts", new XElement("Name", "Ice Lee"), new XElement("Phone", "010-876546", new XAttribute("Type", "Home")), new XElement("Phone", "425-23456", new XAttribute("Type", "Work")), new XElement("Address", new XElement("Street", "ZhiXinCun"), new XElement("City", "Beijin") ) ); 輸出結果: <? Xml version="1.0" encoding="utf-8"?> <Contacts> <Name>Ice Lee</Name> <Phone Type="Home">010-876546</Phone> <Phone Type="Work">425-23456</Phone> <Address> <Street>ZhiXinCun</Street> <City>Beijing</City> </Address> </Contacts>
LINQ to XML提供了為豐富并且簡潔的類來實現對XML的操作。相對于種類繁多的DOM模型的XML類庫而言,LINQ的類使我們的學習曲線變得平滑并且還能達到相同的效果。LINQ to XML解決了DOM模型中的幾個比較不方便的問題,如修改節點名字的問題;同時也拋棄了一些看起來很強大但是很不常用的東西,如實體和實體引用。這樣使得LINQ to XML的操作速度更快并且更方便。以下的幾個例子將展示給大家LINQ to XML如何完成節點名稱修改,增加和刪除的效果。
首先,我們看一下添加一個節點到XML中是這么樣實現的:
XElement xelem = XElement.Load(@"example.xml"); XElement newnewXelem = new XElement("NewNode", "This is new node"); xelem.Add(newXelem);
相當的簡單,只要先生成一個XElement對象然后把它Add到當前節點對象就可以了。進一步我們仔細查看一下XElement可以添加節點的方法??梢钥吹揭还灿蠥dd, AddAfterSelf, AddAnnotation, AddBeforeSelf, AddFirst這五個方法。在默認情況下,Add的操作是將新節點作為被插入節點的***一個孩子節點插入的,而AddFirst正好相反。AddAfterSelf和AddBeforeSelf則是將節點作為兄弟節點插入的,這里要注意的是調用這兩個方法的時候不能以根節點作為被插入節點,因為XML文檔規定只能有一個根節點。***,我們來看一下AddAnnotation這個方法。
AddAnnotation是為一個節點添加一個相關的評注的類對象。這個類對象可以用戶自己定義,所以通過這個方法我們可以擴展XML文檔對象的功能,例如根據節點來獲取類對象的功能。下面是一段引用自msdn的代碼:
public class MyAnnotation { private string tag; public string Tag { get { return tag; } set { tag = value; } } public MyAnnotation(string tag) { this.tag = tag; } } … … MyAnnotation ma = new MyAnnotation("T1"); XElement root = new XElement("Root", "content"); root.AddAnnotation(ma); MyAnnotation ma2 = (MyAnnotation)root.Annotation<MyAnnotation>();
“LINQ to XML是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。