仓酷云
标题:
ASP.NET教程之为XPath自界说函数(由于XPath1.0的函数...
[打印本页]
作者:
谁可相欹
时间:
2015-1-16 22:36
标题:
ASP.NET教程之为XPath自界说函数(由于XPath1.0的函数...
你觉得数据库怎么样?函数想要一个正则表达式的婚配函数,可是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
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
作者:
只想知道
时间:
2015-1-28 09:20
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
作者:
老尸
时间:
2015-2-5 15:52
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
作者:
爱飞
时间:
2015-2-12 20:21
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
作者:
admin
时间:
2015-3-3 09:09
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
作者:
飘灵儿
时间:
2015-3-11 10:01
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
作者:
莫相离
时间:
2015-3-18 04:11
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
作者:
小女巫
时间:
2015-3-25 11:44
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2