首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XML文档节点导航与选择指南

节点之间的关系在XPath中,节点之间有不同的关系:父节点(Parent Node): 每个元素和属性都有一个父节点。子节点(Child Node): 元素节点可以有零、一个或多个子节点。...同级节点(Sibling Node): 具有相同父节点的节点。祖先节点(Ancestor Node): 节点的父节点、父节点的父节点等。...preceding: 选择文档中在当前节点之前出现的所有节点,但不包括祖先、属性节点和命名空间节点。preceding-sibling: 选择当前节点之前的所有同级节点。self: 选择当前节点。.../child::node():选择当前节点的所有子节点。/descendant::book:选择当前节点的所有 book 后代。/ancestor::book:选择当前节点的所有 book 祖先。.../ancestor-or-self::book:选择当前节点的所有 book 祖先,如果当前节点本身是一个 book 节点,也选择当前节点本身。

11300

XPath定位深入学习(二)

选取当前节点的所有后代元素(子、孙等)      4、ancestor  选取当前节点的所有先辈(父、祖父等)      5、descendant-or-self  选取当前节点的所有后代元素(子、孙等...)以及当前节点本身      6、ancestor-or-self  选取当前节点的所有先辈(父、祖父等)以及当前节点本身      7、preceding-sibling 选取当前节点之前的所有同级节点...     8、following-sibling 选取当前节点之后的所有同级节点      9、preceding   选取文档中当前节点的开始标签之前的所有节点      10、following  ...选取文档中当前节点的结束标签之后的所有节点      11、self  选取当前节点      12、attribute  选取当前节点的所有属性      13、namespace 选取当前节点的所有命名空间节点...一.descendant      descendant选取当前节点的所有后代元素(包括子节点、子孙节点…),descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等

77110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    XPath语法_java中path的作用

    如:在XMLDOM中的selectNodes,selectSingleNode方法的参数都是一个XPath表达式,此时这个XPath表达式的执行上下文就是调用这个方法的节点及它所在的环境。...preceding 直到所有这个节点的父辈节点,顺序选择每个父辈节点前的所有同级节点 preceding-sibling 选取当前节点之前的所有同级节点。 self 选取当前节点。...()] Error,谓词前必须是节点或节点集 /messages/message[1]/node()[last()] 第一个message节点的最后一个子节点 /messages/message[1]/...(查找顺序为:先找到body节点的顶级节点(根节点),得到根节点标签前的所有同级节点,执行完成后继续向下一级,顺序得到该节点标签前的所有同级节点,依次类推。)...我们可以理解成少了一个循环,而只查找当前节点前的同级节点) //message[@id=1]//*[namespace::amazon] 查找id=1的所有message节点下的所有命名空间为amazon

    8.8K20

    Python 爬虫工具

    XPath选取节点规则 表达式 描述 nodename 选取此节点的所有子节点。 / 从当前节点选取直接子节点 // 从匹配选择的当前节点选择所有子孙节点,而不考虑它们的位置 . 选取当前节点。...选取当前节点的父节点。 @ 选取属性。 述 nodename 选取此节点的所有子节点。 / 从当前节点选取直接子节点 // 从匹配选择的当前节点选择所有子孙节点,而不考虑它们的位置 ....选取当前节点。 .. 选取当前节点的父节点。 @ 选取属性。 3. 解析案例: 首先创建一个html文件:my.html 用于测试XPath的解析效果 中前两个li节点里面的a的文本 result = html.xpath("//li[last()-2]/a/text()"...::*") # 获取li的所有祖先节点 result = html.xpath("//li[1]/ancestor::ul") # 获取li的所有祖先中的ul节点 result = html.xpath

    1.4K30

    Python爬虫Xpath库详解

    XPath 于 1999 年 11 月 16 日成为 W3C 标准,它被设计为供 XSLT、XPointer 以及其他 XML 解析软件使用,更多的文档可以访问其官方网站:Cover page | xpath...表 4-1 XPath 常用规则 表 达 式 描  述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 .....如果要取出其中一个对象,可以直接用中括号加索引,如 [0]。 6. 子节点 我们通过 / 或 // 即可查找元素的子节点或子孙节点。...可想而知,这里是选取所有子孙节点的文本,其中前两个就是 li 的子节点 a 节点内部的文本,另外一个就是最后一个 li 节点内部的文本,即换行符。...第七次选择时,我们调用了 following-sibling 轴,可以获取当前节点之后的所有同级节点。这里我们使用 * 匹配,所以获取了所有后续同级节点。

    26910

    Xpath的常用定位方法及轴定位

    轴方式定位 轴表达式说明 parent::* :表示当前节点的父节点元素 ancestor::* :表示当前节点的祖先节点元素 child::* :表示当前节点的子元素 /A/descendant...::* 表示A的所有后代元素 self::* :表示当前节点的自身元素 ancestor-or-self::* :表示当前节点的及它的祖先节点元素 descendant-or-self::* :表示当前节点的及它们的后代元素...following-sibling::* :表示当前节点的后序所有兄弟节点元素 preceding-sibling::* :表示当前节点的前面所有兄弟节点元素 following::* :表示当前节点的后序所有元素...::* 查找books1所有的同级元素都查找出来,“*”表示所有 //div[3]/table/tbody/tr[1]/td[1]/following-sibling::td[2] 查找td[1]下同级节点下的第二个节点...2]下year前的同级节点 查找节点的父辈 /bookstore/book[2]/year/parent::* 查找节点的子辈 /bookstore/book[2]/descendant::* 使用position

    1.7K10

    XPath知识点梳理

    轴(axis):   轴其实就是一个在DOM 中的节点查找其他节点的一个方向,轴可定义相对于当前节点的节点集。...preceding 选取文档中当前节点的开始标签之前的所有节点。 preceding-sibling 选取当前节点之前的所有同级节点。 self 选取当前节点。 ?...()] 第一个message节点的最后一个子节点 /messages/message[1]/[last()] Error,谓词前必须是节点或节点集 /messages/message[1]/node()...(查找顺序为:先找到body节点的顶级节点(根节点),得到根节点标签前的所有同级节点,执行完成后继续向下一级,顺序得到该节点标签前的所有同级节点,依次类推。)...我们可以理解成少了一个循环,而只查找当前节点前的同级节点) //message[@id=1]//*[namespace::amazon] 查找id=1的所有message节点下的所有命名空间为amazon

    1.1K40

    Python3网络爬虫实战-28、解析库

    XPath 于 1999 年 11 月 16 日 成为 W3C 标准,它被设计为供 XSLT、XPointer 以及其他 XML 解析软件使用,更多的文档可以访问其官方网站:https://www.w3...XPath常用规则 我们现用表格列举一下几个常用规则: 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 .....,其每一个元素都是一个 Element 对象,如果要取出其中一个对象可以直接用中括号加索引即可取出,如 [0]。...,其中前两个就是 li 的子节点 a 节点内部的文本,另外一个就是最后一个 li 节点内部的文本,即换行符。...第七次选择我们调用了 following-sibling 轴,可以获取当前节点之后的所有同级节点,这里我们使用的是 * 匹配,所以获取了所有后续同级节点。 以上是XPath轴的简单用法 14.

    2.3K20

    学爬虫利器XPath,看这一篇就够了

    XPath 于 1999 年 11 月 16 日 成为 W3C 标准,它被设计为供 XSLT、XPointer 以及其他 XML 解析软件使用,更多的文档可以访问其官方网站:https://www.w3...XPath常用规则 我们现用表格列举一下几个常用规则: 表达式描述 nodename选取此节点的所有子节点 /从当前节点选取直接子节点 //从当前节点选取子孙节点 .选取当前节点 ..选取当前节点的父节点...,其每一个元素都是一个 Element 对象,如果要取出其中一个对象可以直接用中括号加索引即可取出,如 [0]。...,其中前两个就是 li 的子节点 a 节点内部的文本,另外一个就是最后一个 li 节点内部的文本,即换行符。...第七次选择我们调用了 following-sibling 轴,可以获取当前节点之后的所有同级节点,这里我们使用的是 * 匹配,所以获取了所有后续同级节点。

    2.1K21

    爬虫入门指南(1):学习爬虫的基础知识和技巧

    例如,使用//表示选择从根节点开始的所有节点,使用/表示选择当前节点的子节点,使用[]表示筛选条件等。...XPath的轴(Axis): 轴用于在节点之间建立关联,常见的轴包括: # 选择所有祖先节点 xpath_expression = "//book/ancestor::node()" # 选择所有祖先节点和当前节点自身...ancestor-or-self:选择所有祖先节点和当前节点自身。 attribute:选择当前节点的属性节点。 child:选择当前节点的所有子节点。...following-sibling:选择当前节点之后的所有同级节点。 namespace:选择当前节点的命名空间节点。 parent:选择当前节点的父节点。...preceding:选择当前节点之前的所有节点。 preceding-sibling:选择当前节点之前的所有同级节点。 self:选择当前节点。

    63510

    getElementById返回的是什么?串讲HTML DOM

    这个样式又是通过 HTMLDivElement 的什么属性or方法or子对象 访问到的呢?   从 w3cschool 里了解到:Style 对象代表一个单独的样式声明。...No Yes hasAttributes() 判断当前节点是否拥有属性。 No 1 9 Yes hasChildNodes() 判断当前节点是否拥有子节点。...5 1 9 Yes insertBefore() 在指定的子节点前插入新的子节点。 5 1 9 Yes isDefaultNamespace(URI) 返回指定的命名空间 URI 是否为默认。...5 1 9 Yes removeChild() 删除(并返回)当前节点的指定子节点。 5 1 9 Yes replaceChild() 用新节点替换一个子节点。...6 transformNode() 使用 XSLT 把一个节点转换为一个字符串。 6 transformNodeToObject() 使用 XSLT 把一个节点转换为一个文档。

    2.9K20

    Python解析库lxml与xpath用法总结

    XPath 包含一个标准函数库 。XPath 是 XSLT 中的主要元素 。XPath 是一个 W3C 标准 。...下面列出了最有用的路径表达式: 表达式 描述 nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点。...选取当前节点的父节点。 @ 选取属性。 在下面的表格中,我们已列出了一些路径表达式以及表达式的结果: 路径表达式 结果 bookstore 选取 bookstore 元素的所有子节点。...preceding 选取文档中当前节点的开始标签之前的所有节点。 preceding-sibling 选取当前节点之前的所有同级节点。 self 选取当前节点。...下面再来lxml的解析规则: 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 ..

    1K10

    Python解析库lxml与xpath用法总结

    XPath 包含一个标准函数库 。XPath 是 XSLT 中的主要元素 。XPath 是一个 W3C 标准 。...下面列出了最有用的路径表达式: 表达式 描述 nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点。...选取当前节点的父节点。 @ 选取属性。 在下面的表格中,我们已列出了一些路径表达式以及表达式的结果: 路径表达式 结果 bookstore 选取 bookstore 元素的所有子节点。...preceding 选取文档中当前节点的开始标签之前的所有节点。 preceding-sibling 选取当前节点之前的所有同级节点。 self 选取当前节点。...下面再来lxml的解析规则: 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 ..

    1.5K10

    XPath元素定位常用的5种方法(相对路径)

    一、XPath定位 定位 说明 //ul/* ul的所有子元素 //input[2] 第2个input元素 //input[last() 最后一个input元素 input[position()节点 * parent:父节点 * child:子节点 * descendant:所有后代(儿子、孙子、曾孙子...) * preceding:当前元素节点标签之前的所有节点(HTML页面之前的...) * preceding-sibling:当前元素节点标签之前的所有兄弟节点(同级) * following:当前元素节点标签之后的所有节点 * following-sibling:当前元素节点标签之后的所有兄弟节点...(text(),"课程")] #表示//div//table/td/路径前所有节点中找到节点名称为td的节点,向下同级下的一个兄弟节点包含文本课程。...,如图: 原因:语法中括号里需要通过双引号括起来,如果XPath语句中有双引号,要改成单引号,不然只能解析到第一对双引号的内容。

    9.7K30

    python3解析库lxml

    、序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择 XPath于1999年11月16日成为W3C标准,它被设计为供XSLT、XPointer以及其他XML解析软件使用,更多的文档可以访问其官方网站.../ 从当前节点选取直接子节点 // 从当前节点选取子孙节点 ....,但我们只想要其中的某个节点,如第二个节点或者最后一个节点,这时可以利用中括号引入索引的方法获取特定次序的节点: from lxml import etree text1=''' ...') #获取所有子孙节点的a节点 result5=html.xpath('//li[1]/following::*') #获取当前子节之后的所有节点 result6=html.xpath('//li...[1]/following-sibling::*') #获取当前节点的所有同级节点 # [, <Element body at 0x3ca6b96088

    90420

    Python3解析库lxml

    、序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择 XPath于1999年11月16日成为W3C标准,它被设计为供XSLT、XPointer以及其他XML解析软件使用,更多的文档可以访问其官方网站.../ 从当前节点选取直接子节点 // 从当前节点选取子孙节点 ....,但我们只想要其中的某个节点,如第二个节点或者最后一个节点,这时可以利用中括号引入索引的方法获取特定次序的节点: from lxml import etree text1=''' ...') #获取所有子孙节点的a节点 result5=html.xpath('//li[1]/following::*') #获取当前子节之后的所有节点 result6=html.xpath('//li...[1]/following-sibling::*') #获取当前节点的所有同级节点 # [, <Element body at 0x3ca6b96088

    1.7K40

    如何遍历DOM

    DOM由嵌套节点的树结构组成,通常称为DOM树。 我们知道祖先的家谱,该谱系由父母,孩子和兄弟姐妹组成。 DOM中的节点也称为父级,子级和同级,具体取决于它们与其他节点的关系。... html元素节点是父节点。head和body是兄弟节点,它们是 html 的子节点。body包含三个子节点,它们都是兄弟节点,节点的类型不会改变其嵌套的级别。...识别节点类型 文档中的每个节点都有一个节点类型,可以通过nodeType属性访问该类型,更多节点类型大家可以到 MDN 上查看。下面是我们比较常见节点类型。...8 注释节点,如访问开发人员工具中当选中元素的一种非常方便的方法。 通过 F12 选中一个元素,如我们选中 h1 标签: 在控制台中,使用nodeType属性获取当前选定节点的节点类型。

    9K30

    C++图论之强连通图

    横叉边(cross edge):上图中以蓝色边表示(即 9->7 ),搜索的时候遇到的一个已经访问过的结点,但是这个结点 并不是 当前结点的祖先。...搜索过程 从节点1开始深度搜索,记录每一个节点在DFS时的时间戳以及回溯值。如1号节点的刚开始的时间戳为1,回溯值为1。别忘记了,1号节点现在也在栈中。...因为,2节点被访问过,现又以4号节点的子节点身份重新被访问,会想到是不是碰到了祖先,或者说遇到了同一个强连通分量上的节点? 答案是,不能这么简单的认为?因为这种情况有可能是回边也有可能是横叉边。...下图中2号节点在栈中,说明早于4号节点被访问到且还没有加入其它的强连通分量上,可以判断2是4号的祖先。所以节点是否在栈中,是判断是不是回边的一个很重要的条件。 于是,更新4号节点的low[4]=2。...回溯到1号节点时,因dfn[1]=low[1]。1号节点构成只有一个节点的强连通分量。 小结: 深度搜索阶段:如果 u节点的子节点v已经访问、且在栈中。说明v是u的祖先,更新u的low值。

    21410

    libexslt库将XML转换为JSON

    最近在一个 C 程序中碰到需要将 XML 数据转换为 JSON 数据的问题,多番查找几种方法,觉得此程序刚好用到了 Linux 下的 libexslt XSLT 库,因此想直接通过 XSLT 将 XML...网上已经有了现成的 XML 转 JSON 的 XSLT 程序: http://code.google.com/p/xml2json-xslt/ 下载下来的 xml2json.xslt 程序可以很方便的将标准的...我对 xml2json.xslt 做了一些改进,包括将 XML 中的属性名转换为 JSON 子节点(节点名称为 @attr 这种特殊的样式),并且为需要明确转换为 JSON 数组的节点(即使该节点下面只包含一个同类的子节点...JSON,运行下面的命令就会直接将转换出来的 JSON 数据打印到标准输出中: xsltproc xml2json.xslt test.xml 下面主要介绍如何在 Linux 中编程使用 libexslt...libxml 和 libexslt 库中众多的初始化和释放操作。

    4.3K20
    领券