用於xml的語言整合查詢(linq to xml)允許使用標準查詢操作符就像樹形操作符一樣來查詢xml資料,它能夠提供類似xpath的導航在後代、祖先和兄弟的xml元素中導航。它簡化了對xml資料的使用,不必使用額外的語言語法像xpath或xquery。你可以使用linq to xml對你從檔案系統、從乙個遠端web service或從乙個記憶體中的xml內容中獲得的xml執行linq查詢。這篇文章將只關注於使用linq從乙個xml檔案——customers.xml檔案查詢xml。
建立乙個簡單的linq專案
我們將命名我們的visual studio專案為consolelinqtoxml,並使用c#語言。使用using 指令新增下面的命名空間。system.xml.linq命名空間包含linq to xml所用到的類。
//include the linq to xml namespaces
using
system.xml;
//namespace to deal with xml documents
using
system.xml.linq;
//namespace to deal with linq to xml classes
接下來,我們將在我們的專案中新增customers.xml檔案。你也可以選擇將這個xml檔案儲存在你的檔案系統中的乙個目錄下,但是為了簡單起見,我們將只把它包含進我們的專案。在visual studio中點選project選單並選擇add existing item...。
圖1選擇customers.xml檔案並點選add。這個xml檔案將被新增到你的專案中。
圖2從solutions explorer右鍵單擊檔案customers.xml並選擇properties。這將顯示properties視窗。
圖3在customers.xml檔案的properties視窗中,點選copy to output directory選項並從下拉列表框中選擇copy always。
圖4現在我們開始編寫linq查詢來讀取我們的xml檔案。首先在static void main(string args)中編寫一些**。
// create the query你將注意到它是使用xelement類來顯示xml元素。xelement類的load方法很簡單地將customers.xml檔案載入到xelement類中去。elements方法返回xml文件中這個元素——customers元素——的乙個過濾的子元素集合。這只是顯示了linq是多麼強大,因為你對集合使用相同的語言查詢構造而現在是對xml文件。你甚至可以執行排序、過濾和分組如同你平常在linq中所做的。你可以插入乙個where條件從句到上面的查詢中來過濾你的結果。var custs = from c in xelement.load("customers.xml").elements("customers")
select c ;
// execute the query
foreach (var customer in custs)
console.readline();
where c.element("country").value == "italy"當你在visual studio中執行你的專案時,你的輸出將看起來如下所示。你可以點選f5或點選visual studio中的debug - start debugging來執行。
圖5不使用linq來做相同的事情是要複雜得多,因為你仍然需要在節點間搜尋以訪問這些元素和它們的值。
使用Linq to XML遍歷XML
using system using system.xml.linq using system.linq namespace class program console.writeline console.writeline 使用xelement遍歷 foreach xelement e inxel...
使用Linq to XML操作XML的屬性
using system using system.xml.linq using system.linq namespace class program console.writeline console.writeline 使用linq遍歷某個元素的屬性 var query xel.element...
使用ndk stack來查詢崩潰
logcat報錯 fatal signal 6 sigabrt at 0x000025c9 code 6 thread 9703 thread 1277 都是一些暫存器以及函式位址,真不知道怎麼找具體哪個函式出錯了,這個時候使用ndk stack這個工具,ndk stack需要log作為輸入來分析 ...