讀取的XML節點中帶有冒號怎么辦?


昨天,編程讀取XML的時候,遇上了類似下面的一段XML

<a:root xmlns:a="http://ww.abc.com/">
    <a:book>aaaa</a:book>
</a:root>

起初沒有特別的留意,於是乎就像平時讀取XML一樣使用了。

 var ele = from item in xDoc.Descendants("a:book") select item;

但是,運行報錯,不允許傳入冒號:之類的字符,后來查閱資料發現,節點中,冒號前的a代表是的命名空間,冒號后的才是根節點名稱。在Root節點中,也對命名空間進行了聲明 xmlns:a="http://ww.abc.com/" ,知道了這么一回事后,再來看看如何去讀取,正確的讀取是:

 XDocument xDoc = XDocument.Load("a.xml");
 XNamespace n = @"http://www.abc.com";
 var ele = from item in xDoc.Descendants(n + "book")
           select item.Value;

從代碼可以看出,我聲明了一個XNamespace類型的變量,並且把XML文件中出現的命名空間 http://ww.abc.com/ 賦值給它,然后再讀取節點的時候,與真正的節點名稱book進行拼接就可以了!

XML中出現命名空間的原因是,當你需要使用多個XML一起工作時,由於兩個文檔都包含帶有不同內容和定義的節點元素,就會發生命名沖突,加上命名空間使用可以避免發生沖突,這與C#編程中類的命名空間的用處差不多。

另外,如果需要了解更多操作XML的可以訪問下面這篇文章,寫得很詳細:

http://www.cnblogs.com/nsky/archive/2013/03/05/2944725.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM