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


  在查詢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/*管理器*/) ,這樣問題就得到了解決。


免責聲明!

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



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