1. 程式人生 > >C#查詢XML解決“需要命名空間管理器”問題

C#查詢XML解決“需要命名空間管理器”問題

names www tap 管理 content 了解 就會 str nbsp

  在查詢xml時有時會遇到帶有前綴的xml,例如:“<ows:Keyword></ows:Keyword>”

  這時像往常一樣查詢就會報錯,類似於“需要命名空間管理器或 XsltContext。此查詢具有前綴、變量或用戶定義的函數”這樣的錯誤。

  所以需要引入命名空間管理器,代碼如下

            XmlDocument document = new XmlDocument();
            document.Load(feed.Uri);//獲取xml文檔

            XmlNamespaceManager xmlm = new XmlNamespaceManager(document.NameTable);//
將管理器指定到文檔 xmlm.AddNamespace("content", "http://purl.org/rss/1.0/modules/content/");//添加命名空間 xmlm.AddNamespace("dc", "http://purl.org/dc/elements/1.1/"); xmlm.AddNamespace("wfw", "http://wellformedweb.org/CommentAPI/"); xmlm.AddNamespace("atom", "http://www.w3.org/2005/Atom"); xmlm.AddNamespace(
"sy", "http://purl.org/rss/1.0/modules/syndication/"); xmlm.AddNamespace("slash", "http://purl.org/rss/1.0/modules/slash/");

  那麽你可能會問:到哪裏去找命名空間的url?其實他們就在xml文檔的頭部,可與從xml文檔中獲得。

  到這裏問題一般就得到了解決,但在我的實際使用中還是報了錯,報錯內容和上面基本一樣。

  那麽解決辦法就是在查詢帶有前綴的Node時再次指定管理器,如下代碼 item.SelectSingleNode("content:encoded", xmlm/*

管理器*/) ,這樣問題就得到了解決。

C#查詢XML解決“需要命名空間管理器”問題