zoukankan      html  css  js  c++  java
  • 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/*管理器*/) ,这样问题就得到了解决。

  • 相关阅读:
    playbook配置不同系统版本的yum源配置
    使用playbook部署lamp
    ansible常用模块
    部署Ansible
    Ansible介绍与安装
    lamp
    mysql主从
    mysql进阶命令
    mysql基础命令
    Dockerfile制作http镜像(以alpine做底层镜像为例)
  • 原文地址:https://www.cnblogs.com/rocketRobin/p/7472391.html
Copyright © 2011-2022 走看看