给xpath添加正则表达式匹配函数

给xpath添加正则表达式匹配函数xpath正则表达式,xpath 正则,xpath表达式,xpath函数,xpath,xpath语法,xpath教程,python xpath,xpath定位,xpath是什么
社会化媒体营销 > 给xpath添加正则表达式匹配函数

给xpath添加正则表达式匹配函数(1)

xpath添加正则表达式匹配函数

  做网页解析时,将html转成xml格式之后,再利用xpath则可以轻易地截取任何所需要的数据。在使用xpath时,常常会用到其中的一些函数,特别是字符串函数,完整的函数列表可在w3school找到:https://www.w3school.com.cn/xpath/xpath_functions.asp#string)。然而这仅仅是标准xpath里所的,dotnet里这只实现了一部分,特别是本标题所提到的正则匹配函数fn:matches(string,pattern),dotnet里竟然不支持。虽然dotnnet里还是能用诸如contains等判断函数,但比起强大的正则表达式,其实现的功能远远不能满足要求。

  为了能够更加灵活、方便的匹配字符串,需要给xpath添加自定义的正则匹配函数,幸好dotnet了接口,先看看这些基类及接口。

  XsltContext

  封装可扩展样式表转换语言 (XSLT) 处理器的当前执行上下文,使 XML 路径语言 (XPath) 在 XPath 表达式中解析函数、参数和命名空间。需要定义一个继承XsltContext的子类,实现对自定义函数的调用。

  IXsltContextFunction

  为在运行库执行期间在可扩展样式表转换语言 (XSLT) 样式表中定义的给定函数一个接口。实现该接口的子类定义以及自定义函数的功能。

  IXsltContextVariable

为在运行库执行期间在样式表中定义的给定变量一个接口。其子类实现在调用自定义函数时,参数值的计算。

   涉及类比较多,但是在具体实现远没有那么复杂,后续添加其他函数也很方便。

关键代码

实现XsltContext

public class XpathContext : XsltContext    {        // XsltArgumentList to store my user defined variables        private XsltArgumentList m_ArgList;        // Constructors         public XpathContext()        { }        public XpathContext(NameTable nt)            : base(nt)        {        }        public XpathContext(NameTable nt, XsltArgumentList argList)            : base(nt)        {            m_ArgList = argList;        }        // Returns the XsltArgumentList that contains custom variable definitions.        public XsltArgumentList ArgList        {            get            {                return m_ArgList;            }        }        // Function to resolve references to my custom functions.        public override IXsltContextFunction ResolveFunction(string prefix,     string name, XPathResultType[] ArgTypes)        {            XPathExtensionFunction func = null;            // Create an instance of appropriate extension function class.            switch (name)            {                // 匹配正则表达式, XPath1.0没有该方法                case "Match":                    func = new XPathExtensionFunction("Match"12new        XPathResultType[] { XPathResultType.NodeSet, XPathResultType.String }, XPathResultType.Boolean);                    break;                // 去除空格                case "Trim":                    func = new XPathExtensionFunction("Trim"11,                        new XPathResultType[] { XPathResultType.String }, XPathResultType.String);                    break;                default:                    throw new ArgumentException("没有定义" + name + "函数");            }

点击显示全文

分页:12345
  • xpath的使用方法

    xpath的使用方法_计算机软件及应用_IT/计算机_专业资料。xpath的使用方法 首先要说的是 XPath 数据类型。XPath 可分为四种数据类型: 1. 节点集《node-set》 节点...

    贡献者:rockyylt
    237422
  • XPath语法规则及实例

    XPath语法规则及实例_IT/计算机_专业资料。XPath 语法规则术语: 一、 XPath 术语: 1. 节点: 在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指...

    贡献者:wulq507
    192503
  • XPath入门教程整理

    </list> XML 声明《如 <?xml version="1.0" encoding="UTF-8"?>》或文档类型定义《DTD》 没有节点类型,因此在 XPath 中不能引用这类实体。 元素节点代表 ...

    贡献者:li_chun_tao
    172373
  • C操作xml之xpath语法

    C操作xml之xpath语法_计算机软件及应用_IT/计算机_专业资料。以前也发过关于.net 中操作 XML 的帖子,但不是很详细,现在我将详细介绍一下 c#如何操 作 xml ...

    贡献者:irigaqn6
    364714
  • xpath详解总结,很全面

    请看一个典型的 XPath 查询表达式:/messages/message//child:: node《》[@id=0],其中/messages/message 是路径《绝对路径以"/ "开始》,child::是轴表示在子节点...

    贡献者:园丁网数学
    202545
  • 八爪鱼如何通过xpath实现自定义定位元素

    八爪鱼如何通过xpath实现自定义定位元素_互联网_IT/计算机_专业资料。本文介绍八爪鱼如何通过xpath实现自定义定位元素。八爪鱼·云采集服务平台 www.bazhuayu.com 八爪...

    贡献者:八爪鱼大数据
    136215
  • XPath实例教程

    XPath 实例教程一、基本的 XPath 语法 实例教程一、基本的 XPath 语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝...

    贡献者:luocb1980
    365779
  • Xpath使用实例简单粗暴

    Xpath使用实例简单粗暴_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档Xpath使用实例简单粗暴_计算机软件及应用_IT/计算机_专业资料。XPath...

    贡献者:kun_hu
    199496
加载中...
加载中...
  • XPath实例教程

    XPath 实例教程一、基本的 XPath 语法 实例教程一、基本的 XPath 语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝...

  • XPath语法规则及实例

    XPath语法规则及实例_IT/计算机_专业资料。XPath 语法规则术语: 一、 XPath 术语: 1. 节点: 在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指...

  • 八爪鱼如何通过xpath实现自定义定位元素

    八爪鱼如何通过xpath实现自定义定位元素_互联网_IT/计算机_专业资料。本文介绍八爪鱼如何通过xpath实现自定义定位元素。八爪鱼·云采集服务平台 www.bazhuayu.com 八爪...

  • xpath详细使用介绍

    xpath详细使用介绍_计算机软件及应用_IT/计算机_专业资料。xpath详细使用介绍如果要告诉别人买一加仑牛奶,您会怎么说?“请去买一加仑牛奶回来” 还是 “从前门出去,...

  • C操作xml之xpath语法

    C操作xml之xpath语法_计算机软件及应用_IT/计算机_专业资料。以前也发过关于.net 中操作 XML 的帖子,但不是很详细,现在我将详细介绍一下 c#如何操 作 xml ...

24小时热门信息
  • docker环境搭建

    docker环境搭建_计算机软件及应用_IT/计算机_专业资料。docker环境安装全文 Docker 是 PasS 提供商 DoctCloud 开源的一个基于 LXC 的高级容 器引擎,源代码托管在 ...

    贡献者:张小飞705
    767694
  • docker in dockers错误

    docker run -d -p 127.0.0.1:8080:8080 -v /var/lib/jenkins:/var/jenkins_hom e --add-host=dockerhost:`/sbin/ip route | /usr/bin/awk '/...

    贡献者:崩高级
    248184
  • docker学习文档

    docker学习文档_计算机软件及应用_IT/计算机_专业资料。docker学习文档,如何创建docker,如何在docker上部署tomcat与mysql服务 docker 学习笔记笔者装的 linux 系统为 ...

    贡献者:plantixweb
    209099
  • Docker常用命令汇总

    Docker常用命令汇总_计算机软件及应用_IT/计算机_专业资料。超实用:Docker常用命令汇总 Docker 常用命令汇总一、查看 docker 信息 1、查看 docker 版本 docker version...

    贡献者:zq_rh
    155626
  • docker安装部署文档

    2.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统” ;而 docker 开源而且 轻量,称为“容器” ,单个容器适合部署少量应用,比如部署一个 redis、一个 ...

    贡献者:chen8919043
    103362
  • Docker 镜像的存储机制介绍

    Docker 镜像的存储机制介绍 近几年 Docker 风靡技术圈,不少从业人员都或多或少使用过,也了解如何通过 Dockerfile 构建镜像, 从远程镜像仓库拉取自己所需镜像,推送...

    贡献者:贾宝传奇
    174357
精彩推荐
手机版 | 欢迎来到社会化媒体营销
RSS订阅