亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

為XPath自定義函數(因為XPath1.0的函數非常有限)

2019-11-18 17:18:31
字體:
來源:轉載
供稿:網友

想要一個正則表達式的匹配函數,但是XPath1.0中間沒有,
只好自己擴展一個,在網上搜了一下,有一篇文章不錯,
http://www.microsoft.com/china/MSDN/library/data/xml/AddingCustomFunctionstoXpath.mspx?mfr=true
該文章定義了一個split,一個replace,不過就是沒有match,
只好在它的基礎上,擴展一下

仔細觀察一下代碼,發現想要擴展一個函數很簡單,只要修改這幾段就好了:

1:CustomContext.cs


// Function to resolve references to my custom functions.
        public override IXsltContextFunction ResolveFunction(string PRefix,
     string name, XPathResultType[] ArgTypes)
        {
            XPathRegExExtensionFunction func = null;
            // Create an instance of appropriate extension function class.
            switch (name)
            {
                case "Match":
                    // Usage
                    // myFunctions:Matches(string source, string Regex_pattern) returns Boolean
                    func = new XPathRegExExtensionFunction("Match", 2, 2, new
        XPathResultType[] {XPathResultType.String, XPathResultType.String}
        , XPathResultType.Boolean );
                    break;
                case "Split":
                    // Usage
                    // myFunctions:Split(string source, string Regex_pattern, int n) returns string
                    func = new XPathRegExExtensionFunction("Split", 3, 3, new
        XPathResultType[] {XPathResultType.String, XPathResultType.String,
XPathResultType.Number}, XPathResultType.String);
                    break;
                case "Replace":
                    // Usage
                    // myFunctions:Replace(string source, string Regex_pattern, string replacement_string) returns string
                    func = new XPathRegExExtensionFunction("Replace", 3, 3, new
        XPathResultType[] {XPathResultType.String, XPathResultType.String,
XPathResultType.String}, XPathResultType.String);
                    break;
            }
            return func;
        }
 

2: XPathRegExExtensionFunction.cs


// This method is invoked at run time to execute the user defined function.
        public object Invoke(XsltContext xsltContext, object[] args,
     XPathNavigator docContext)
        {
            Regex r;
            string str = null;
            // The two custom XPath extension functions
            switch (m_FunctionName)
            {
                case "Match":
                    r = new Regex(args[1].ToString());
                    MatchCollection m = r.Matches(args[0].ToString());
                    if (m.Count == 0)
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                    break;

                case "Split":
                    r = new Regex(args[1].ToString());
                    string[] s1 = r.Split(args[0].ToString());
                    int n = Convert.ToInt32(args[2]);
                    if (s1.Length < n)
                        str = "";
                    else
                        str = s1[n - 1];
                    break;
                case "Replace":
                    r = new Regex(args[1].ToString());
                    string s2 = r.Replace(args[0].ToString(), args[2].ToString());
                    str = s2;
                    break;
            }
            return (object)str;
        }
 

另外一個文件XPathExtensionVariable.cs其實和函數擴展沒有太多的關系,那是設置參數的。

這連個文件修改好了之后,就可以調用了:

 

query = navigator.Compile("xdUtil:Match(9,'//d')");
            CustomContext cntxt = new CustomContext();
            // Add a namespace definition for myFunctions prefix.
            cntxt.AddNamespace("xdUtil", "http://myXPathExtensionFunctions");
            query.SetContext(cntxt);
            Evaluate(query, navigator);
當然,要是支持XPath2.0 就好了,XPath2.0這些函數都是內置支持的,可惜目前好像還不支持。

全部的代碼在這里:
http://cleo.VEVb.com/Files/cleo/XPathExtFunction.rar

出處:cleo BLOG


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕av一区| 欧美激情视频网| 亚洲激情视频在线| 欧美日韩亚洲一区二区三区| 国产精品偷伦一区二区| 国产日韩精品视频| 亚洲精品短视频| 成人免费福利视频| 亚洲欧洲高清在线| 亚洲精品久久久一区二区三区| 精品亚洲一区二区| 亚洲精品美女在线观看| 国产精品视频久久久| 日本a级片电影一区二区| 欧美精品久久久久久久| 精品国模在线视频| 九九九久久国产免费| 久久精品成人一区二区三区| 欧美激情xxxx| 久久中文字幕视频| 成人一区二区电影| 伊人久久综合97精品| 日韩精品视频免费专区在线播放| 国产在线拍偷自揄拍精品| 一区二区国产精品视频| 亚洲精品国产精品久久清纯直播| 成人黄色免费片| 成人免费在线视频网址| 欧美香蕉大胸在线视频观看| 日韩精品极品在线观看播放免费视频| 国产自产女人91一区在线观看| 国产不卡视频在线| 国产一区二区三区四区福利| 日韩av影片在线观看| 欧美乱大交xxxxx另类电影| 一本一本久久a久久精品综合小说| 国产精品高潮呻吟视频| 亚洲人成毛片在线播放| 亚洲午夜av电影| 欧美大片在线免费观看| 中文字幕在线看视频国产欧美在线看完整| 国产精品最新在线观看| 欧美国产极速在线| 美日韩精品免费视频| 黑人精品xxx一区| 久久成人在线视频| 岛国视频午夜一区免费在线观看| 亚洲欧美在线看| 91在线无精精品一区二区| 在线播放日韩av| 色综合久久悠悠| 日韩免费观看av| 精品国产电影一区| 欧美日韩中国免费专区在线看| 亚洲福利精品在线| 97精品免费视频| 亚洲成av人乱码色午夜| 国产精品69精品一区二区三区| 欧美亚洲日本网站| 中文一区二区视频| 午夜精品久久久久久99热| 亚洲国产91精品在线观看| 91色在线视频| 国产精品99久久99久久久二8| 欧美日韩性视频在线| 国产欧美精品一区二区三区-老狼| 国产精品美女久久| 日韩一区av在线| 欧美不卡视频一区发布| 555www成人网| 欧美日韩中文字幕日韩欧美| 久久精品福利视频| 成人久久一区二区| 2019国产精品自在线拍国产不卡| 久久在线精品视频| 久久人人爽人人爽人人片av高请| 日韩大陆欧美高清视频区| 91亚洲国产精品| 亚洲欧美日韩网| 亚洲成avwww人| 日韩少妇与小伙激情| 国产精品伦子伦免费视频| 色阁综合伊人av| 国产精品亚洲综合天堂夜夜| 国产成人精品久久二区二区| 久久久精品久久久久| 亚洲第一网站免费视频| 亚洲成人中文字幕| 久久亚洲精品网站| 久久久国产精彩视频美女艺术照福利| 精品久久久久久国产91| 国产欧美 在线欧美| 国产精品电影在线观看| 亚洲无限乱码一二三四麻| 成人精品在线视频| 这里只有精品视频| 久久影视免费观看| 欧美视频免费在线观看| 欧美日韩国产二区| 色与欲影视天天看综合网| 亚洲国产精品久久91精品| 97在线看福利| 一本一道久久a久久精品逆3p| 欧美成人精品三级在线观看| 日韩在线观看电影| 日韩在线一区二区三区免费视频| 97婷婷涩涩精品一区| 欧美性xxxxx极品娇小| 91欧美精品成人综合在线观看| 欧美日韩裸体免费视频| 91美女片黄在线观看游戏| 91精品国产91久久久久福利| 性欧美xxxx交| 久久久久久久999| 都市激情亚洲色图| 亚洲免费电影在线观看| 国产精品久久视频| 国产成人亚洲综合青青| 亚洲国产成人精品一区二区| 麻豆国产va免费精品高清在线| 欧美日韩中国免费专区在线看| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲精品福利资源站| 成人网在线免费看| 欧美日韩一二三四五区| 日韩精品视频在线免费观看| 国产精品女主播视频| 欧美成人精品不卡视频在线观看| 成人午夜激情免费视频| 日本精品视频在线| 成人久久一区二区| 97香蕉超级碰碰久久免费软件| 国产区精品在线观看| 欧美寡妇偷汉性猛交| 亚洲视频网站在线观看| 中文日韩在线视频| 成人欧美一区二区三区黑人孕妇| 成人伊人精品色xxxx视频| 78m国产成人精品视频| 欧美巨大黑人极品精男| 久久这里有精品视频| 91av视频在线播放| 国产亚洲欧美另类中文| 日韩电影大片中文字幕| 国产ts一区二区| 日本高清久久天堂| 欧美性xxxxxxxxx| 亚洲美女黄色片| 国产一区二区三区高清在线观看| 国产婷婷色综合av蜜臀av| 亚洲国产成人精品电影| 欧美一级大片在线观看| 日韩小视频在线观看| 日韩欧美亚洲范冰冰与中字| 久久亚洲精品小早川怜子66| 亚洲色在线视频| 国产精品无av码在线观看| 日韩美女中文字幕| 国产欧美最新羞羞视频在线观看| 国产精品久久91| 欧美在线视频一二三| 国产区亚洲区欧美区| 98精品在线视频| 久久天天躁狠狠躁夜夜av|