仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 712|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET教程之为XPath自界说函数(由于XPath1.0的函数...

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:36:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你觉得数据库怎么样?函数想要一个正则表达式的婚配函数,可是XPath1.0两头没有,
只好本人扩大一个,在网上搜了一下,有一篇文章不错,
http://www.microsoft.com/china/MSDN/library/data/xml/AddingCustomFunctionstoXpath.mspx?mfr=true
该文章界说了一个split,一个replace,不外就是没有match,
只幸亏它的基本上,扩大一下
细心察看一下代码,发明想要扩大一个函数很复杂,只需修正这几段就行了:
1:CustomContext.cs

//Functiontoresolvereferencestomycustomfunctions.
publicoverrideIXsltContextFunctionResolveFunction(stringprefix,
stringname,XPathResultType[]ArgTypes)
{
XPathRegExExtensionFunctionfunc=null;
//Createaninstanceofappropriateextensionfunctionclass.
switch(name)
{
case"Match":
//Usage
//myFunctions:Matches(stringsource,stringRegex_pattern)returnsBoolean
func=newXPathRegExExtensionFunction("Match",2,2,new
XPathResultType[]{XPathResultType.String,XPathResultType.String}
,XPathResultType.Boolean);
break;
case"Split":
//Usage
//myFunctions:Split(stringsource,stringRegex_pattern,intn)returnsstring
func=newXPathRegExExtensionFunction("Split",3,3,new
XPathResultType[]{XPathResultType.String,XPathResultType.String,
XPathResultType.Number},XPathResultType.String);
break;
case"Replace":
//Usage
//myFunctions:Replace(stringsource,stringRegex_pattern,stringreplacement_string)returnsstring
func=newXPathRegExExtensionFunction("Replace",3,3,new
XPathResultType[]{XPathResultType.String,XPathResultType.String,
XPathResultType.String},XPathResultType.String);
break;
}
returnfunc;
}

2:XPathRegExExtensionFunction.cs

//Thismethodisinvokedatruntimetoexecutetheuserdefinedfunction.
publicobjectInvoke(XsltContextxsltContext,object[]args,
XPathNavigatordocContext)
{
Regexr;
stringstr=null;
//ThetwocustomXPathextensionfunctions
switch(m_FunctionName)
{
case"Match":
r=newRegex(args[1].ToString());
MatchCollectionm=r.Matches(args[0].ToString());
if(m.Count==0)
{
returnfalse;
}
else
{
returntrue;
}
break;
case"Split":
r=newRegex(args[1].ToString());
string[]s1=r.Split(args[0].ToString());
intn=Convert.ToInt32(args[2]);
if(s1.Length<n)
str="";
else
str=s1[n-1];
break;
case"Replace":
r=newRegex(args[1].ToString());
strings2=r.Replace(args[0].ToString(),args[2].ToString());
str=s2;
break;
}
return(object)str;
}

别的一个文件XPathExtensionVariable.cs实在和函数扩大没有太多的干系,那是设置参数的。
这连个文件修正好了以后,就能够挪用了:
query=navigator.Compile("xdUtil:Match(9,d)");
CustomContextcntxt=newCustomContext();
//AddanamespacedefinitionformyFunctionsprefix.
cntxt.AddNamespace("xdUtil","http://myXPathExtensionFunctions");
query.SetContext(cntxt);
Evaluate(query,navigator);
固然,如果撑持XPath2.0就行了,XPath2.0这些函数都是内置撑持的,惋惜今朝仿佛还不撑持。
全体的代码在这里:
http://cleo.cnblogs.com/Files/cleo/XPathExtFunction.rar
出处:cleoBLOG
就安全性而言,Java已经远远低于VB.NET,更无法与安全性著称的C#相比。
若相依 该用户已被删除
沙发
发表于 2015-1-19 18:35:18 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
只想知道 该用户已被删除
板凳
发表于 2015-1-28 09:20:37 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
老尸 该用户已被删除
地板
发表于 2015-2-5 15:52:58 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
爱飞 该用户已被删除
5#
发表于 2015-2-12 20:21:08 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
admin 该用户已被删除
6#
发表于 2015-3-3 09:09:30 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
飘灵儿 该用户已被删除
7#
发表于 2015-3-11 10:01:14 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
莫相离 该用户已被删除
8#
发表于 2015-3-18 04:11:37 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
小女巫 该用户已被删除
9#
发表于 2015-3-25 11:44:59 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-17 14:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表