使用XmlDocument类时候报错:

  1. 未处理的XPathException
    需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数。

需要使用XmlNamespaceManager类:Resolves, adds, and removes namespaces to a collection and provides scope management for these namespaces.

这是因为使用的soap文档含有自己的命名空间。相同问题:http://bbs.csdn.net/topics/350101606

最终修改后的代码:

  1. string soap = "";
  2. soap += "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">";
  3. soap += "<SOAP-ENV:Body>";
  4. soap += "<AP-MSG:SubscriptionRequest xmlns:AP-MSG=\"http://www.vestas.dk/2001/04/ap\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\">";
  5. soap += "<RequestBase ClientRequestHandle=\"41\" ReturnItemTime=\"false\" ReturnItemName=\"true\" CallbackURL=\"10.116.21.222:1055\" CallbackRate=\"PT10S\"/>";
  6. soap += "<ItemRequestSpec MaxAge=\"PT0.1S\"/>";
  7. soap += "<ItemList>";
  8. foreach (IoTag tag in Tags)
  9. {
  10. soap += string.Format("<Item ItemName=\"{0}\"/>", tag.Name);
  11. }
  12. soap += "</ItemList>";
  13. soap += "</AP-MSG:SubscriptionRequest>";
  14. soap += "</SOAP-ENV:Body>";
  15. soap += "</SOAP-ENV:Envelope>";
  16. string subscriptionRequest = "";
  17. subscriptionRequest += "POST * HTTP/1.1\r\n";
  18. subscriptionRequest += "Content-Type:text/xml;charset=ISO-8859-1\r\n";
  19. subscriptionRequest += "Connection:Keep-Alive\r\n";
  20. subscriptionRequest += "SOAPAction:http://www.vestas.dk/2001/04/ap#SubscriptionRequest\r\n";
  21. subscriptionRequest += string.Format("Content-Length:{0}\r\n", soap.Length);
  22. subscriptionRequest += "\r\n";
  23. subscriptionRequest += soap;
  24.  
  25. XmlDocument xDoc = new XmlDocument();
  26. xDoc.LoadXml(soap);
  27. XmlNamespaceManager nsMgr = new XmlNamespaceManager(xDoc.NameTable);
  28. nsMgr.AddNamespace("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
  29. nsMgr.AddNamespace("AP-MSG", "http://www.vestas.dk/2001/04/ap");
  30. nsMgr.AddNamespace("SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/");
  31. XmlElement xe = xDoc.DocumentElement;
  32. XmlNodeList xnl = xDoc.SelectNodes("/SOAP-ENV:Envelope/SOAP-ENV:Body/AP-MSG:SubscriptionRequest/ItemList/Item", nsMgr);
  33.             foreach (XmlNode item in xnl)
  34. {
  35. string s = item.Attributes["ItemName"].Value;
  36. }

使用XmlDocument.SelectNodes遍历xml元素遇到的一个XPathException的更多相关文章

  1. STL中用erase()方法遍历删除元素 .xml

    pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...

  2. C# 使用XmlDocument类对XML文档进行操作

    原创地址:http://www.cnblogs.com/jfzhu/archive/2012/11/19/2778098.html 转载请注明出处 W3C制定了XML DOM标准.很多编程语言中多提供 ...

  3. [VBS]遍历XML文档

    一.脚本源码 使用VBS脚本遍历XML文件 Option Explicit '定义常量 '元素 '文本 'CDATA '实体引用 '实体 '处理指令 '注释 '文档类型 '遍历文件 NameList. ...

  4. 递归遍历XML节点属性和属性值

    public static XmlDocument FileMergedIntoXML(string strXmlPathPublic) { string strXmlPathPublic = str ...

  5. XML DOM 遍历Xml文档

    1.xml文档内容: <?xml version="1.0" encoding="utf-8" ?> <bookstore> <b ...

  6. 递归遍历XML所有节点

    package xml; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.DocumentEx ...

  7. JavaScript遍历XML总结

    1:读取服务器端xml(注意不同浏览器版本的区别),使用XML可以增强系统的扩展性,只用修改XML就可以实现增加减少功能的目的. function loadXMLDoc1(dname){     if ...

  8. 详解SimpleXML添加_修改_删除_遍历XML节点属性

    SimpleXML概述 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构造为一棵DOM ...

  9. 问题:jQuery中遍历XML文件时候,获取子节点children不支持的情况(已解决)

    问题描述: 今天在写一个基于 jquery 的读取xml文件的程序时候,需要遍历xml的节点. 代码片段如下: function parse_xml_node(parent,result){ // r ...

随机推荐

  1. Awake和Start

    经过查阅资料和自己的理解整理出来的,欢迎大家指教. Awake和Start对比 awake比start先执行. 当有多个类的时候,所有类的awake执行完了才会执行start. awake里面一般放初 ...

  2. cocos2d-x 2.1.4学习笔记01:windows平台搭建cocos2d-x开发环境

    cocos2d-x的大致开发流程是,首先使用win32版进行代码编写并完成游戏,然后将代码迁移到对应的开发环境上进行交叉编译完成游戏打包,如iphone上是mac+xcode,android是ecli ...

  3. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  4. Eval()和DataBinder Eval(Container DataItem,)的区别及用法

        ASP.NET 2.0改善了模板中的数据绑定操作把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fiel ...

  5. Yii框架页面运行流程

    Yii框架页面运行流程 CComponent | CModel | CActiveRecord.CFormModel(所有模型的父类) | 表名.php(模型) | 入口文件------------- ...

  6. DI(依赖注入)简单理解 NO1

    依赖注入:目的削减程序的耦合度,达到高内聚/低耦合 常用形式:Interface Driven Design接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等.通过Io ...

  7. SEVERE: Class [ com/mysema/query/dml/DeleteClause ] not found

    SEVERE:   Class [ com/mysema/query/dml/DeleteClause ] not found. Error while loading [ class org.spr ...

  8. 解码一个加密的js文件

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. java web-----servelet

    1,定义servlet: 2,servlet生命周期: 3,HttpServlet常用方法: 4,servlet常用接口: 一,servlet定义: servlet是一个继承HttpServlet类的 ...

  10. Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...