[XPath]XPath与lxml(一)XPath术语-创新互联

前言   这是一篇主要介绍 XPath 的文章,由于 JQuery 已经不支持 XPath,所以本文主要通过 Python 的 lxml.etree 来介绍 XPath。[XPath]XPath与lxm
l(一)XPath术语 什么是 XPath ?

XPath 是一门在 XML 文档中查找信息的语言,对 XPath 的理解是很多高级 XML 应用的基础,XPath 在 XML 中通过元素和属性进行导航。

创新互联建站10多年企业网站设计服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,企业网站设计及推广,对地磅秤等多个行业拥有丰富的网站推广经验的网站建设公司。什么是 lxml ?

lxml 是一个用来处理 XML 的第三方 Python 库,它在底层封装了用 C 语言编写的 libxml2 和 libxslt,并以简单强大的 Python API,兼容并加强了著名的 ElementTree API。

XPath 术语

在 XPath 语境中,XML 文档被视作节点树,节点树的根节点也被称作文档节点。

XPath 将节点树中的节点(Node)分为七类:元素(Element),属性(Attribute),文本(Text),命名空间(Namespace),处理指令(Processing-instruction),注释(Comment)和文档节点(Document nodes)。

请看一下 XML 文档:

Harry PotterJ K. Rowling 
200529.99

以上 XML 文档中:

 (这是一个“根”)
J K. Rowling (这是一个“元素”)
lang="en" (这是一个“属性”)

换个视角理解它:

- bookstore                             (我是根)
    - book                              (我是元素)
        - title                         (我是元素)
            - attributes                (我是属性)
                - lang  = en            (楼上其实是属性容器,我才是属性)
            - text = Harry Potter       (我是文本)
        - author                        (我是元素)
            - text = J K. Rowling       (我是文本)
        - year                          (我是元素)
            - text = 2005               (我是文本)
        - price                         (我是元素)
            - text = 29.99              (我是文本)

以上就是节点树的示意图,看起来是不是很像 YAML 格式,每一行都表示一个节点,缩进表示各行之间的关系。其中无父或无子的节点被称为原子值(Atomic value)也称基本值,以上等号后面的都是原子值。节点和基本值都统称为项目(Item)。

节点之间的关系 父(Parent)

每个元素都肯定有一个父节点,最顶层的元素父亲是根节点。同理每个属性必然有一个父,它们的父是元素。

上文 XML 文档中,根 bookstore 是元素 book 的父节点,book 是元素 title, author, year, price 的父节点,title 是 lang 的父节点。

子(Children)

元素可以有零或多个子。

上文 XML 文档中,title, author, year, price 是 book 的子节点。

同胞(Sibling)

父节点相同的节点之间互为同胞,也称彼此的兄弟节点。

上文 XML 文档中,title, author, year, price 彼此互为同胞。

先辈(Ancestor)

某节点的父节点、父的父,以此类推一直追溯至根节点之间所有节点。

上文 XML 文档中,title, author, year, price 的先辈就是 book, bookstore。

后代(Descendant)

某节点的子节点、子的子,以此类推至最后一个子节点之间所有节点。

上文 XML 文档中,bookstore 的后代就是 title, author, year, price 。


文章标题:[XPath]XPath与lxml(一)XPath术语-创新互联
网址分享:http://scyanting.com/article/epoog.html