一切福田,不離方寸,從心而覓,感無不通。

执行xpath时提示,需要命名空间管理器或XsltContext。此查询具有前缀、变量或用户定义的函数

如果 XPath 表达式包含前缀,则必须将前缀和命名空间 URI 对添加到 XmlNamespaceManager 中。 XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 例子: xml文件内容: <?xml version="1.0"?> <roots weight="3" xmlns:sml="www.sdkd.net.cn"> <sml:root leaf="a">1111</sml:root> <sml:root leaf="b">2222</sml:root> <sml:root leaf="c">3333</sml:root> <sml:root leaf="de">3333</sml:root> <sml:root leaf="d">4444</sml:root> <sml:root leaf="e">5555</sml:root> <sml:root leaf="f">6666</sml:root> <sml:root leaf="g">7777</sml:root> <sml:root leaf="h">8888</sml:root> <sml:root leaf="i">9999</sml:root> <sml:root leaf="j">0000</sml:root> </roots> 程序: XmlDocument doc = new XmlDocument(); doc.Load("a.xml"); XmlNode root = doc.DocumentElement; XmlNamespaceManager nsp = new XmlNamespaceManager(doc.NameTable); nsp.AddNamespace("sml", "www.sdkd.net.cn"); XmlNodeList a = root.SelectNodes("child::sml:root[starts-with(@leaf,’d')]",nsp); Console.WriteLine("Find " + a.Count.ToString()); foreach (XmlNode e in a) { Console.WriteLine(e.InnerText); } 以上程序中使用到了sml前缀,因此需要添加命名空间管理 XmlNamespaceManager 类包含命名空间 URI 及其前缀的集合。它允许解析、添加和移除集合中的命名空间。某些上下文需要此类以提高 XML 处理性能。例如,XsltContext 类使用 XmlNamespaceManager 以支持 XPath。   http://blog.163.com/lzh_19999/blog/static/14127362008821188317/

龙生   04 Jul 2017
View Details

C# HttpWebRequest GET HTTP HTTPS 请求

这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全部采用手工操作工作量大而且繁琐,因此周公决定利用C#来实现。在很多地方都需要验证用户身份才可以进行下一步操作,这就免不了POST请求来登录,在实际过程中发现有些网站登录是HTTPS形式的,在解决过程中遇到了一些小问题,现在跟大家分享。 通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebResponse对象,有了返回的HttpWebResponse实例,可以获取登录过程中返回的会话信息,也可以获取响应流。 代码如下:

从上面的代码中可以看出POST数据到HTTP和HTTPS站点不同,POST数据到HTTPS站点的时候需要设置ServicePointManager类的ServerCertificateValidationCallback属性,并且在POST到https://passport.baidu.com/?login时还需要将HttpWebResquest实例的ProtocolVersion属性设置为HttpVersion.Version10(这个未验证是否所有的HTTPS站点都需要设置),否则在调用GetResponse()方法时会抛出“基础连接已经关闭: 连接被意外关闭。”的异常。 用法举例 这个类用起来也很简单: (1)POST数据到HTTPS站点,用它来登录百度:

(2)发送GET请求到HTTP站点 在cookieString中包含了服务器端返回的会话信息数据,从中提取了之后可以设置Cookie下次登录时带上这个Cookie就可以以认证用户的信息,假设我们已经登录成功并且获取了Cookie,那么发送GET请求的代码如下:

(3)发送POST请求到HTTP站点 以登录51CTO为例:

在这里说句题外话,CSDN的登录处理是由http://passport.csdn.net/ajax/accounthandler.ashx这个Handler来处理的。 总结 在本文只是讲解了在C#中发送请求到HTTP和HTTPS的用法,分GET/POST两种方式,为减少一些繁琐和机械的编码,周公将其封装为一个类,发送数据之后返回HttpWebResponse对象实例,利用这个实例我们可以获取服务器端返回的Cookie以便用认证用户的身份继续发送请求,或者读取服务器端响应的内容,不过在读取响应内容时要注意响应格式和编码,本来在这个类中还有读取HTML和WML内容的方法(包括服务器使用压缩方式传输的数据),但限于篇幅和其它方面的原因,此处省略掉了。如有机会,在以后的文章中会继续讲述这方面的内容。   from:http://www.cnblogs.com/youfeng365/p/6138944.html

龙生   03 Jul 2017
View Details

C#中DateTime转换成毫秒数

var dateTimeStart = new DateTime(1970, 1, 1, 8, 0, 0); var milliseconds = DateTime.Now.Subtract(dateTimeStart).TotalMilliseconds;

龙生   03 Jul 2017
View Details

远程服务器返回错误: (401)未经授权的解决办法

1、错误号401.1 症状:HTTP 错误 401.1 – 未经授权:访问由于凭据无效被拒绝。 分析: 由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。 解决方案: (1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用: 控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。 (2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限,如果没有尝试用以下步骤赋予权限: 开始->程序->管理工具->本地安全策略->安全策略->本地策略->用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。 注意:一般自定义 IIS默认匿名访问帐号都属于组,为了安全,没有特殊需要,请遵循此规则。 2、错误号401.2 症状:HTTP 错误 401.2 – 未经授权:访问由于服务器配置被拒绝。 原因:关闭了匿名身份验证 解决方案: 运行inetmgr,打开站点属性->目录安全性->身份验证和访问控制->选中“启用匿名访问”,输入用户名,或者点击“浏览”选择合法的用户,并两次输入密码后确定。 3、错误号:401.3 症状:HTTP 错误 401.3 – 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。 原因:IIS匿名用户一般属于Guests组,而我们一般把存放网站的硬盘的权限只分配给administrators组,这时候按照继承原则,网站文件夹也只有administrators组的成员才能访问,导致IIS匿名用户访问该文件的NTFS权限不足,从而导致页面无法访问。 解决方案: 给IIS匿名用户访问网站文件夹的权限,方法:进入该文件夹的安全选项,添加IIS匿名用户,并赋予相应权限,一般是读、写。 4、C#开发程序出现问题 在System.Net中提供了一个NetworkCredential,通过它我们可以在网络中提供一个凭证,只有获得该凭证的用户才能访问相应的服务的权限。在这里我们也使用NetworkCredential。

在webconfig配置web代理,使用httpweb请求的时候不需要设置proxy属性。

http://blog.csdn.net/mang_liu/article/details/7708864

龙生   03 Jul 2017
View Details

js中的时间与毫秒数互相转换

【1】js毫秒时间转换成日期时间 var oldTime = (new Date("2012/12/25 20:11:11")).getTime(); //得到毫秒数   //不是上面格式的时间需要转换    //starttime =’2012-12-25 20:17:24′;     starttime = starttime.replace(new RegExp("-","gm"),"/");     var starttimeHaoMiao = (new Date(starttime)).getTime(); //得到毫秒数 【2】毫秒数转化为时间 var oldTime = (new Date("2012/12/25 20:11:11")).getTime(); //得到毫秒数   var newTime = new Date(oldTime); //就得到普通的时间了  参考:http://blog.csdn.net/qq435792305/article/details/7973751

龙生   02 Jul 2017
View Details

JavaScript Date 对象

Date 对象 Date 对象用于处理日期和时间。 创建 Date 对象的语法:

注释:Date 对象会自动把当前日期和时间保存为其初始值。 Date 对象属性 属性 描述 constructor 返回对创建此对象的 Date 函数的引用。 prototype 使您有能力向对象添加属性和方法。 Date 对象方法 方法 描述 Date() 返回当日的日期和时间。 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 getMonth() 从 Date 对象返回月份 (0 ~ 11)。 getFullYear() 从 Date 对象以四位数字返回年份。 getYear() 请使用 getFullYear() 方法代替。 getHours() 返回 Date 对象的小时 (0 ~ 23)。 getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。 getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。 getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。 getTime() 返回 1970 年 1 月 […]

龙生   02 Jul 2017
View Details

MySQL字符截取函数

1、从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2、从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长度) 例:select right(content,200) as abstract from my_content_t 3、截取字符串 substring(str, pos) substring(str, pos, length) 说明:substring(被截取字段,从第几位开始截取) substring(被截取字段,从第几位开始截取,截取长度) 例:select substring(content,5) as abstract from my_content_t select substring(content,5,200) as abstract from my_content_t (注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度) 4、按关键字截取字符串 substring_index(str,delim,count) 说明:substring_index(被截取字段,关键字,关键字出现的次数) 例:select substring_index("blog.jb51.net","。",2) as abstract from my_content_t 结果:blog.jb51 (注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束) 函数简介: SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FORlen) 不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。 详情请查阅手册。 实例: 表1:user 表2:jl 期望效果:通过user表jlid字段存储的id值,读取jl表中的相应记录,这里想要读取,jl表中id为1、2的记录,首先想到用in,但是很遗憾由于 jlid字段存储的id值有2个,尽管从形式上符合in(1,2)的格式,但是如果你使用select jl.* from jl where jl.id in(select jlid from user where user.id=1)来查询的话,是不行的,他总是返回id为1的记录。 那么怎么办呢?如果我们能够分别得到1,2中的1和2就行了。好在mysql也提供了字符串截取函数SUBSTRING。 sql句法如下: SELECT […]

龙生   01 Jul 2017
View Details
1 7 8