2009
05.12

C#處理XML中Namespace方法(XPath)

今天為了在C#中處理XML資料,

將它包裝成物件後利用Remoting送給Flex應用…..

本來一切都是這麼的順利,

想不到在最緊要的關頭,畫面居然一片空白!!

於是就這樣搞了一個下午!

最後,終於發現問題的所在了……XML中的Namespace。

snap302
▲一般我們自己定義XML資料時都不太會去使用Namespace的程式寫法


按下F5後!

snap31
▲上面程式碼輸出的結果


然後我們看一下在XML中出現Namespace時的程式碼:

snap38

▲加上Namespace命名空間的XML檔案


再按下令人緊張的F5:

snap33

▲白的!沒錯,你沒看錯,就是白的!!


搞了一個下午,查了一些資料,

發現原來是這個問題,終於將他解決了,解法如下:

snap36

▲加上XmlNamespaceManager的程式碼


在XmlNamespaceManager上加入Namespace資訊

我們來看看API上的提示:

snap35

▲設定一個prefix標籤,並將xmlns後面的uri填入第二個參數


好了~就是這樣,看出來了嗎?

記得在XPath的篩選地方加上辛苦建立的prefix標籤喔,並將manager填入第二個參數!


之後心平氣和的按下F5測試!

沒有意外的話應該會得到跟上面"圖二"一樣的結果~


搞定,看來需要加點小班趕進度了^^"


相關文章:
  • 從XML中取出資料當作另一個XML的篩選條件
  • 在ADO.NET C#使用SQLite資料庫
  • 本文引用:
    文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。

    1 comment so far

    Add Your Comment
    1. 大師您好:
      我參考的您的【FLEX+AIR】書上第12章,嘗試想用FLEX+MS SQL+.NET將MSSQL
      裡 的資庫取出,但我新增了一個FLEX project with ASP.NET然後
      create application from database連到自己的資料庫後,有出現一個
      tablename.mxml檔,當我執行它後出現一個錯誤訊息:
      An unexpected error occurred and has been logged.
      而且DataGrid的欄位也沒有跑出資料。請問大師有比較詳盡的說明可以讓FLEX
      快速連接MS SQL資料庫嗎? 感謝您~