使用XmlDocument类时候报错:

未处理的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

最终修改后的代码:

 string soap = "";
soap += "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">";
soap += "<SOAP-ENV:Body>";
soap += "<AP-MSG:SubscriptionRequest xmlns:AP-MSG=\"http://www.vestas.dk/2001/04/ap\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\">";
soap += "<RequestBase ClientRequestHandle=\"41\" ReturnItemTime=\"false\" ReturnItemName=\"true\" CallbackURL=\"10.116.21.222:1055\" CallbackRate=\"PT10S\"/>";
soap += "<ItemRequestSpec MaxAge=\"PT0.1S\"/>";
soap += "<ItemList>";
foreach (IoTag tag in Tags)
{
soap += string.Format("<Item ItemName=\"{0}\"/>", tag.Name);
}
soap += "</ItemList>";
soap += "</AP-MSG:SubscriptionRequest>";
soap += "</SOAP-ENV:Body>";
soap += "</SOAP-ENV:Envelope>";
string subscriptionRequest = "";
subscriptionRequest += "POST * HTTP/1.1\r\n";
subscriptionRequest += "Content-Type:text/xml;charset=ISO-8859-1\r\n";
subscriptionRequest += "Connection:Keep-Alive\r\n";
subscriptionRequest += "SOAPAction:http://www.vestas.dk/2001/04/ap#SubscriptionRequest\r\n";
subscriptionRequest += string.Format("Content-Length:{0}\r\n", soap.Length);
subscriptionRequest += "\r\n";
subscriptionRequest += soap; XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(soap);
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xDoc.NameTable);
nsMgr.AddNamespace("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
nsMgr.AddNamespace("AP-MSG", "http://www.vestas.dk/2001/04/ap");
nsMgr.AddNamespace("SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"
);
XmlElement xe = xDoc.DocumentElement;
XmlNodeList xnl = xDoc.SelectNodes("/SOAP-ENV:Envelope/SOAP-ENV:Body/AP-MSG:SubscriptionRequest/ItemList/Item", nsMgr);             foreach (XmlNode item in xnl)
{
string s = item.Attributes["ItemName"].Value;
}

使用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. Adobe Flash Platform产品介绍

    解释 adobe flash platform flex是一个免费的开源的框架 该应用程序通常是用在 浏览器和 桌面 AIR中的 了解 flex框架 ,Flex sdk 和adobe flash bu ...

  2. Mac安装Mysql过程

    1.Mysql官网下载安装包 http://dev.mysql.com/downloads/mysql/ 选择Mac OS X 10.10 (x86, 64-bit), DMG Archive版本下载 ...

  3. StyleCop安装及配置

    How to modify the default new class template for C# in Visual Studio 2008 or 2010? 可参考博客: http://www ...

  4. 如何在已安装vs2010的基础上安装sql2008

    以前老受到别人写的这类东西的帮助,所以这次决定自己试下,第一次发这种,写得不好莫怪.       涉略sql2008一个多星期了.怎么说呢?Transact-SQL的编程虽然不如C++,java等高级 ...

  5. Unity3D 之UGUI 按钮

    新建一个按钮 按钮对应的属性 按钮下面只有一个文本的 游戏对象,是Button对应的显示文字 Interactable -->是否可以交互 Transition -->变换,对应各种关于按 ...

  6. Css3动画库收集

    1.animate.css – 齐全的CSS3动画库 http://www.dowebok.com/98.html 2.Angular官方动画库 http://augus.github.io/ngAn ...

  7. 20160408javaweb之JDBC ---PreparedStatement

    PreparedStatement 1.Sql注入:由于jdbc程序在执行的过程中sql语句在拼装时使用了由页面传入参数,如果用户恶意传入一些sql中的特殊关键字,会导致sql语句意义发生变化,这种攻 ...

  8. DataContext 数据在F5刷新频繁,会出现数据读取错误

    DataContext 数据在F5刷新频繁,会出现数据读取错误 DataContext是 Linq to sql数据模型的底层数据库对象所有LInq数据表对象都是由它派生的, 只要建立一个数据库操作, ...

  9. mysql merge表介绍

    在Mysql数据库中,Mysql Merge表有点类似于视图.下面就让我们来一起了解一下Mysql Merge表都有哪些优点,希望对您能有所帮助. Mysql Merge表的优点: A: 分离静态的和 ...

  10. OC - 7.Foundation框架的简单介绍

    OC语言-07-OC语言-Foundation框架   结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInte ...