XML和Xpath定位小結

2022-02-19 14:05:17 字數 1751 閱讀 5157

1.1 xml簡介

典型的xml文件是由xml文件首部和xml文件主體構成的。

xml文件首部:宣告包含<? ?>標籤之中。例如:

<?xml version="1.0" encoding="utf-8" ?>

xml文件主體,文件中的資料是通過樹形結構進行組織的,乙個標籤引出乙個元素節點,元素開始標籤中可以指定屬性節點,也可以包含子元素和文字內容,也可以什麼也沒有而成為乙個空元素。

1、乙個格式正確的xml文件必須由乙個且僅由乙個頂節元素組成。將沒有根元素的xml文件稱為xml片段。

2、正確處理特殊字元。使用cdata段:

<?xml versoin="1.0" encoding="utf-8" ?>

]]>

1.2

xpath語言

xpath將xml的文件結構視為乙個樹形結構,元素、屬性、文字、注釋以及處理指令都是這個樹形結構上的節點,對於xml文件中元素、屬性、文字、注釋以及處理指令的訪問實際上是按順序遍歷這棵樹,使用xpath的路徑表示法,可以定位到xml文件中的乙個節點或者節點集合。

在xpath中,可以使用相關標識來定位元素以及其屬性,這些識別符號關鍵字主要有:child、self、parent、descendant、attribute等。

child為預設識別符號,self表示當前節點,parent表示上一級節點。

descendant表示當前子孫節點,attribute表示當前節點的屬性。

絕對路徑的xpath表示

絕對路徑是從根節點到目標節點所經歷的路徑。

1、元素節點的訪問:

/child::config/child::department

可以簡化:

/config/department

2、屬性節點的訪問

/child::config/child::department/attribute::id

可以簡化:

/config/department/@id

3、文字節點訪問

可以直接使用「//」來表示,例如「.//」表示當前路徑下的文字內容。

4、子孫節點的訪問

可以通過元素節點,但是離根元素太長,可以使用子孫節點表示:

/child::class/descendant::name

可以簡化:

/class//name

5、任意節點的訪問

/child::config/child::department/child::*

可以簡寫:

/config/department/*

相對路徑的xpath表示:

parent::director/@id 簡寫 ../@id

self::director/name 簡寫 ./name

1.3

xpath的元素定位條件

在xml中,也可以根據篩選條件返回指定節點集

1、根據屬性值篩選節點集

可以使用下面的表示來定位class元素下所有的director子元素:

/class/director

但是需要定位具有屬性id的director時:

/class/director[@id]

當需要具體確定屬性數值時:

/class/director[@id='1001']

2、根據或表示式篩選節點集

當需要對多個具有不同名稱節點進行處理,可以使用|表示式,例如需要定位director下的name或者age,二者任意乙個度可以:

/class/director/name|age

Xpath定位和CssSelector定位的區別

1 從根節點擊取,下級節點 2 任意節點擊取 3 任意標籤選取 4 選取屬性 5 選取當前節點的父節點 8 last 選取最後乙個 定位方式 xpath css selector find element by id id值 id id值 id值 find element by name name值...

xpath屬性定位

絕對定位 element driver.find element by xpath html body div input value 查詢 裡是屬性,什麼屬性都可以,是對當前節點的限制條件相對定位 element driver.find element by xpath div class ng ...

詳解xpath定位

xpath定位 1 通過開發者工具直接copy 右擊copy copy xpath 2 串聯的方式定位元素 3 通過父元素定位子元素 from selenium import webdriver from time import sleep driver webdriver.chrome drive...