XPath是一种寻找信息的XML文档的语言。XPath是用于导航XML文档中的元素和属性。XPath包含超过100个内置函数。这些函数是用于字符串值,数值、日期和时间比较,节点和QName处理序列处理,逻辑值,等等。XPath是W3C标准,和XPath成为W3C标准11月16日1999年。XPath是设计用于XSLT, XPointer,和其他XML解析软件。在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释和文档节点(或根节点)。XML文档被当作一个树节点。树的根被称为文档节点或者根节点。1. 常用的选择路径表达式节点:表达式描述示例nodename选择nodename节点的所有子节点的xpath (\/ \/ div)选择\/ div节点的所有子节点选择xpath (' \/ div ')从根节点选择div节点从根节点\/ \/选择所有当前节点,不管他们的位置的xpath (\/ \/ div)选择所有div节点。
\/ div)选择当前节点div节点。选择父节点的xpath(' . ')的当前节点,并返回前一节点@select属性xpath (\u201C\/ \/ @calss\u201D)来选择所有类属性。2. 谓词:嵌入在方括号,用于查找一个特定的节点或节点包含指定值的xpath表达式的结果(\u201C\/身体\/ div[1]\u201D)选择第一个div节点下身体xpath(' \/身体\/ div [last())\u201D)选择最后一个div节点下身体xpath(' \/身体\/ div去年()[1]\u201D)选择倒数第二div节点下身体xpath(' \/身体\/ div[正电子()< 3]\u201D)选择第一个两个div节点下身体xpath(\u201C\/身体\/ div [@class]\u201D)选择div节点下的类属性的身体xpath(' \/身体\/ div [@class =\u201C主要\u201D]\u201D)选择div节点下的类属性为主要的身体与价格选择div节点元素值下身体大于35。
可以定义Xpath轴:轴相对于当前节点的节点集轴名称表达描述ancestorxpath ('。\/祖先::*\u201D)选择所有祖先节点(父母、祖父)的当前节点ancestor-or-selfxpath (\/ ancestor-or-self:: *)选择当前节点的所有祖先节点和节点本身attributepath ('。\/属性::*\u2019)选择当前节点的所有属性childxpath(\/子::*)返回当前节点的所有子节点descendantxpath(\/后代::*)返回所有后代节点当前节点的子节点,孙子)followingxpath(\/:: *)选择所有节点在文档中当前节点的结束标签之后following-sibingxpath (\/ following-sibing:: *)选择当前节点后的兄弟节点parentxpath(\/父::*)前xpath选择当前节点的父节点(前\/::*)选择所有节点在文档中当前节点的开始标记之前preceding-sibling xpath ('。
函数功能:使用功能函数,以便更好地执行模糊搜索功能使用说明starts-withxpath (' \/ \/ div[始于(@ id,\u201C马\u201D)]\u201D)选择id的div节点值从马containsxpath (' \/ \/ div[包含(@ id,\u201C马\u201D)]\u201D)选择id的div节点值包含马andxpath (' \/ \/ div[包含(@ id,\u201C马\u201D)和包含(@ id,\u201C在\u201D)]\u201D)选择id的div节点值包含马和文本()xpath (' \/ \/ div[包含(文本(),\u201C马\u201D)]\u201D)选择节点的文本的div节点包含马7。
精确定位(1)包含(str1 str2)用于确定str1是否包含str2示例1:\/ \/ *[包含(@class, c-summaryc-row)]选择节点的值包含@class c-summary c-row示例2:\/ \/ div[包含(。\/ \/ text(),\u201C价格\u201D)]选择包含在文本的div节点()(2)()选择当前位置的节点数量示例1:\/ \/ * [@class = '结果'][position() = 1]选择第一个节点@class = '结果'Example 2: \/ \/ * [@class = '结果'][position() < = 2]选择第一个两个节点@class =\u201C结果\u201D(3)最后()从底部选择最后一个节点。
使用的方法是一样的\u2014\u2014sibling2后,过滤信息(1)substring-before (str1 str2)用于返回的字符串str1第一str2之前。例子:substring-before (。\/ \/ * [@class = ' c-more_link '] \/ text(),\u201C文章\u201D)returns. \/ \/ * [@class = ' c-more_link '] \/ text()第一'Article\u201D前的一部分,如果没有\u201C文章\u201D,它返回一个null值(2)substring-after (str1 str2)类似于substring-before,返回字符串的一部分str1第一str2之后。
\/ \/ * [@class = ' c-more_link '] \/ text(),\u201C文章\u201D)returns. \/ \/ * [@class = ' c-more_link '] \/ text()第一'Article\u201D之后的部分,如果没有\u201C文章\u201D,它将返回空值示例2:substring-after (substring-before (。\/ \/ * [@class = ' c-more_link '] \/ text(),\u201C新闻\u201D),\u201C文章\u201D)返回。\/ \/ * [@class = ' c-more_link '] \/ text()之间的部分第一'news面前和后面的第一个'article (3) normalize - space()用于空白字符在字符串的头部和尾部是删除。
例子:normalize - space (。\/ \/ *[包含(@class ' c - summaryc-row ')))(4)翻译(字符串、str1 str2)如果字符串的字符出现在str1,取而代之的人物在同一位置str1 str2对应。如果没有可用str2中的人物删除字符的字符串的例子:翻译(12:30,\u201C03\u201D,\u201C54\u201D)结果:\u201C45\u201D3。拼接信息(1)concat()函数是用于连接多个字符串。:Concat (\u201C* [@class = ' c-more_link '] \/ @href)