日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python进阶(十七)xml(下)

發布時間:2023/12/18 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python进阶(十七)xml(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、XML簡介

xml用到的地方:tomcat配置文件

1) xml 指可擴展標記語言(Extensible Markup Language)

2) xml 被設計用于結構化、存儲和傳輸數據

3) xml 是一種標記語言,很類似于HTML

4) xml 沒有像HTML那樣具有預定義標簽,需要程序員自定義標簽

5) xml 被設計為具有自我描述性,并且是W3C的標準。

?

?2、xml和html的區別:

html是xml的一種特例。html里面的標簽全都是已經預定義好的,都是有含義的。

xml的數據存儲和顯示是分開的,存儲一個文件,顯示一個文件,xml不需要標簽,可以自定義。

xml:

<bookstore>

<book>

<name>技術指南</name>

</book>

</bookstore>

如果將以上內容放進瀏覽器中,瀏覽器中可以看到,但是不能像html顯示各種樣式。

如果將以上xml也能作為網頁顯示,如何實現?

?

3、html5實例:

網址鏈接:

http://www.w3school.com.cn/tiy/t.asp?f=html5_video_all

代碼:

<!DOCTYPE HTML>

<html>

<body>

?

<video width="320" height="240" controls="controls">

? <source src="/i/movie.ogg" type="video/ogg">

? <source src="/i/movie.mp4" type="video/mp4">

Your browser does not support the video tag.

</video>

?

</body>

</html>

?

html5比html4的區別就是多了很多標簽

<h1>我的第一個標題</h1>

<p>我的死一個段落。</p>

<div>塊

<title>標題

?

?

4、AJAX

AJAX = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。

AJAX 不是新的編程語言,而是一種使用現有標準的新方法。

AJAX 是與服務器交換數據并更新部分網頁的藝術,在不重新加載整個頁面的情況下。

實際用處:比如,注冊頁面,用戶名還未提交,就提示該用戶名已被使用

該技術的好處:不用刷新頁面,重新加載頁面要3s,而AJAX需要幾十-幾百毫秒。

異步傳輸:5個步驟,誰先執行都可以,沒有先后順序,可以并發

同步傳輸:按照順序傳輸,1,2,3,4,5

?

5、CMS(content management system,新聞發布系統)

?

6、Apache和tomcat的區別:

Apache只能做靜態網頁的顯示。

tomcat既能動態也能靜態

靜態網頁:網頁一旦生成好,網頁是不變的。訪問的內容是一樣的。

動態網頁:是根據你的請求數據和服務器的處理規則實時生成的網頁。

?

7、XML文檔(樹結構)

XML文檔形成了一種樹結構,它從”根部開始”,然后擴展到“樹枝”。

XML文檔必須包含根元素,該元素是所有其他元素的父元素,文芳中的所有元素形成了一棵文檔樹,這棵樹從根開始,并擴展到樹的最頂端,并且所有的元素都可以有子元素。

<root>

<child>

<subchild>...</subchild>

</child>

</root>

父元素擁有子元素,相同層級上的子元素成為同胞(兄弟或姐妹)。XML中所有子元素都可以有文本內容和屬性,類似于HTML.

?

?8、XML基礎知識介紹

1) XML元素

????? XML元素是指開始標簽到結束標簽的部分(均包括開始結束)。

????? 一個元素可以包含:

????? 1. 其他元素

????? 2. 文本

????? 3. 屬性

????? 4. 或混合以上所有

<!--? Edited with XML Spy v2007 (http://www.altova.com)? --> #xml注釋

<catalog>????????????????????????????????????????????????????????????? #根元素

<cd>??????????????????????????????????????????????????????????????????? #子標簽

<title>Empire Burlesque</title>? # Empire Burlesque文本節點,和空格也是文本節點,<>內的內容是element 節點

<artist>Bob Dylan</artist>??????? #<title>為標簽

<country>USA</country>

<company>Columbia</company>

<price>10.90</price>

<year>1985</year>

</cd>

<cd>...</cd>

</catalog>

?

<cd class = "classic">??? #class = "classic"為屬性,做輔助說明的

<a href = "http://www.souhu.com">souhu</a>

# href = http://www.souhu.com標簽里面的內容,以=顯示的叫做屬性

#點擊souhu這個藍字,會跳轉到http://www.souhu.com這個網頁中

?????

2) XML語法規則

????? 1. 所有的XML元素都必須有一個開始標簽和結束標簽,省略結束標簽是非法的。如:

???????? <root>content</root>

????? 2. html可以少一個標簽,因為瀏覽器會自動糾錯,瀏覽器怎么解析html都不會崩潰。如果少一個標簽,也可以解析,不過解析的內容可能和預期有差異。

???????? <title>光榮之路

????? 3. XML標簽對大小寫敏感;比如:下面時兩個不同的標簽

???????? <Note>this is a test1<Note>

???????? <note>this is a test2<note>

????? 4. XML文檔必須有根元素。如:

<note>

??? <b>this is a test2</b>

??? <name>joy</name>

</note>

????? 5. XML必須正確嵌套,父元素必須完全包住子元素。如:

<note><b>this is a test2</b><name>joy</name></note>

????? 6. XML屬性值必須加引號,元素的屬性值都是一個鍵值對形式。如:

<book catgory = “Python”></book>

??????? 注意:

???????????? book元素中的屬性category的值是Python必須用引號引起來,使用單引號和雙引號都可以,但是如果屬性值本身包含雙引號,外層必須使用單引號;但如果包含了單引號,外層必須使用雙引號。

?

9、XML命名規則

XML元素必須遵循以下命名規則:

1)名稱可以包含字母、數字以及其他字符

2)名稱不能以數字或標點符號開頭

3)名稱不能以字母xml或XML開始

4)名稱不能包含空格

5)可以使用任何名稱,沒有保留字

6)名稱應該具有描述性,簡短和簡單,可以同時使用下劃線。

7)避免-、.、:等字符

8)XML的注釋格式為:<! -- 注釋內容 -->??????? #和html的注釋一樣。

#注釋的內容不會作為瀏覽器顯示的內容,也不會作為XML解析的內容

?

10、CDATA

CDATA(Unparsed Character Data)指的是不應由XML解析器進行解析的文本數據。

XML解析器會將“<”(新元素的開始)和”&”(字符實體的開始)解析成具有特殊漢含義的字符。當代碼中含有大量的“<”和”&”符號,可以將腳本定義為CDATA來避免這個問題,因為XML文檔中的所有文本均會被解析器解析,只有CDATA部分中的所有的內容會被XML解析器忽略。

<![CDATA[“我們自己的代碼”]]>

注意:CDATA部分不能包含字符串”]]>”,并且”]]>”之間不能有空格或折行等字符,如果包含了,會以為是CDATA的結束。也不允許嵌套CDATA部分。

<script>

<![CDATA[

function test(x,y)

??? { if (x<0 &&y<0) then

??????? {

??????????? return 0;

??????? }

??????? else

??????? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

??????????? return 1:

}

]]>

</script>

?

11、Python解析XML三種方法

1)SAX(simple API for XML)

Python標準庫中包含SAX解析器,SAX是用的是事件驅動模型,通過在解析XML過程中觸發一個個的事件并調用用戶定義的回調函數來處理XML文件。

解析的基本過程:

讀到一個XML開始標簽,就會開始一個事件,然后事件就會調用一系列的函數去處理一些事情,當讀到一個結束標簽時,就會觸發另一個事件。所以,我們寫XML文檔如果有格式錯誤的話解析就會出錯。

這是一種流式處理,一邊讀一邊解析,占用內存少,但速度慢。

2) DOM(Document Object Model)

DOM它是以對象樹來表示一個XML文檔的方法,使用它的好處就是你可以非常靈活的在對象中進行遍歷。

將XML數據在內存中解析成一個樹,通過對樹的操作來操作XML.

由于DOM是將XML讀取到內存,然后解析成一個樹,如果要處理的XML文件比較大的話,就會很耗內存,所以DOM一般偏向于處理一些小的XML,(如配置文件)比較快

占內存,但是速度快。--建議這種,因為xml現在普遍挺小,內存已經不是瓶頸。

3) ElementTree(Object Model)

ElementTree就像一個輕量級的DOM,具有方便而友好的API.代碼的可用性好、速度快,消耗內存少。可以認為是對DOM的改進。

支持XPATH,定位元素的一種方式。自動化定位元素的一種方式。

?

12、Xml.dom解析xml

xml.dom解析xml的思路:

一個DOM的解析器在解析一個XML文檔時,一次性讀取整個文檔,把文檔中所有元素保存在內存中的一個樹結構里,之后利用DOM提供的不同函數來讀取該文檔的內容和結構,也可以把修改過的內容寫入XML文件。

<?xml version="1.0" encoding="utf-8" ?>???????? ?#xml文件頭

<!--this is a test about xml.-->?????????????????? ?#注釋

<booklist type="science and engineering">??????? #根節點

<book category="math">

<title>learning math</title>

<author>張三</author>

<pageNumber>561</pageNumber>

</book>

<book category="Python">

<title>learning Python</title>

<author>李四</author>

<pageNumber>600</pageNumber>

</book>

</booklist>

#以上是book.xml文檔的內容

?

13、xml.dom解析xml常用API

1) minidom.parse(parser=None,bufsize=None)

from xml.dom.minidom import parse?? #從xml.dom.minidom模塊引入解析器parse
DOMTree = parse(r"e:\book.xml")???? #minidom解析器打開xml文檔并將其解析為內存中的一棵樹
print(type(DOMTree))

#<class 'xml.dom.minidom.Document'> #xml的document對象

#minidom.parse(parser=None,bufsize=None)

#該函數的作用是使用parse解析器打開XML文檔,并將其解析為DOM文檔,也就是內存中的一棵樹,并得到這個DOM對象。

?

2) doc.documentElement:獲取xml文檔對象,就是拿到DOM樹的根

>>> from xml.dom.minidom import parse

>>> DOMTree = parse(r"e:\book.xml")

>>> booklist = DOMTree.documentElement

>>> print(booklist)

<DOM Element: booklist at 0x28471659b90>?? #booklist是根節點

?

3) doc.toxml:獲取xml文本內容

>>> print(DOMTree.toxml)

<bound method Node.toxml of <xml.dom.minidom.Document object at 0x000002847165AA08>>

>>> print(DOMTree.toxml())???????????? #將xml中的內容除了根節點的內容都打印一下

<?xml version="1.0" ?><!--this is a test about xml.--><booklist type="science and engineering">

<book category="math">

<title>learning math</title>

<author>張三</author>

<pageNumber>561</pageNumber>

</book>

<book category="Python">

<title>learning Python</title>

<author>李四</author>

<pageNumber>600</pageNumber>

</book>

</booklist>

>>>?

?

4) has Attribute:判斷是否包含屬性

>>> from xml.dom.minidom import parse??

>>> DOMTree = parse(r"e:\book.xml")? ??#minidom解析器打開xml文檔并將其解析為內存中的一棵樹

>>> booklist = DOMTree.documentElement  #獲取xml文檔對象,就是拿到樹的根

>>> print(u"DOM樹的根對象:", booklist)

#DOM樹的根對象: <DOM Element: booklist at 0x28471659af8>

>>> if booklist.hasAttribute("type"):? ????#判斷根節點booklist是否有type屬性

...???? print(u"booklist元素存在type屬性")

... else :

...???? print(u"booklist元素不存在type屬性")

...

booklist元素存在type屬性

>>>?

?

5) node.getAttrbute:獲取節點node的某個屬性值

>>> from xml.dom.minidom import parse??

>>> DOMTree = parse(r"e:\book.xml")? ??#minidom解析器打開xml文檔并將其解析為內存中的一棵樹

>>> booklist = DOMTree.documentElement  #獲取xml文檔對象,就是拿到樹的根

>>> print(u"DOM樹的根對象:", booklist)

#DOM樹的根對象: <DOM Element: booklist at 0x284716595a0>

>>> if booklist.hasAttribute("type"):? ????#判斷根節點booklist是否有type屬性

...???? print(u"Root element is",booklist.getAttribute("type"))

...

Root element is science and engineering

?

6) node.getElementsByTagName(name):獲取節點元素

獲取XML文檔中某個父節點下具有相同節點名的節點對象集合,是一個list對象。

>>> from xml.dom.minidom import parse??

>>> DOMTree = parse(r"e:\book.xml")? ??#minidom解析器打開xml文檔并將其解析為內存中的一棵樹

>>> booklist = DOMTree.documentElement  #獲取xml文檔對象,就是拿到樹的根

>>> print(u"DOM樹的根對象:", booklist)

#DOM樹的根對象: <DOM Element: booklist at 0x28471513c28>

>>> books = booklist.getElementsByTagName("book") ?#獲取根節點下標簽是book的

>>> print(type(books))???????????????????????????? ???#節點對象,該返回值是個list

<class 'xml.dom.minicompat.NodeList'>

>>> print(books)

[<DOM Element: book at 0x28471513a60>, <DOM Element: book at 0x28471513638>]

>>> print(books[0])

<DOM Element: book at 0x28471513a60>

#上面解析xml的程序中,getElementsByTagName()函數返回的是同一父節點下所有同級(即兄弟節點)節點中相同標簽的集合,這是一個list對象,所以可以使用list序列所有操作。這個時候,我們可以通過索引去拿相應的節點,也可以使用節點名稱去拿相應的節點,推薦第二種方法,準確。也可以循環遍歷整個返回的list。

注意:

就算某個父節點下沒有同名的節點,該方法返回的仍是一個list,只是此時的list為空。

?

7) node.childNodes:返回節點node下所有子節點組成的list

>>> from xml.dom.minidom import parse??

>>> DOMTree = parse(r"e:\book.xml")? ??#minidom解析器打開xml文檔并將其解析為內存中的一棵樹

>>> booklist = DOMTree.documentElement  #獲取xml文檔對象,就是拿到樹的根

>>> print(u"DOM樹的根對象:", booklist)

#DOM樹的根對象: <DOM Element: booklist at 0x284716595a0>

>>> books = booklist.getElementsByTagName("book")#返回父節點下標簽為book的節點

>>> print(books[0].childNodes)????????? ?#返回第一個book節點下的所有的子節點

[<DOM Text node "'\n'">, <DOM Element: title at 0x28471513898>, <DOM Text node "'\n'">, <DOM Element: author at 0x284715139c8>, <DOM Text node "'\n'">, <DOM Element: pageNumber at 0x28471513930>, <DOM Text node "'\n'">]

#<DOM Text node "'\n'">是換行,如果不想取換行,拿到所有的子節點,不要文本節點,如何做?

>>> print((books[0].childNodes)[1::2])??? ???#使用切片實現

[<DOM Element: title at 0x28471513898>, <DOM Element: author at 0x284715139c8>, <DOM Element: pageNumber at 0x28471513930>]

?

8) 獲取節點文本值重要!!

  1.
from xml.dom.minidom import parse? #從xml.dom.minidom模塊引入解析器parse
DOMTree = parse(r"e:\book.xml")??? #minidom解析器打開xml文檔并將其解析為內存中的一棵樹
print(type(DOMTree))

<class 'xml.dom.minidom.Document'>
booklist = DOMTree.documentElement
print(booklist)

<DOM Element: booklist at 0x23b6dba2b90>
print("*"*30)

******************************
books = booklist.getElementsByTagName("book")
d={}
for i in range(1,6,2):
??? tag_name = books[1].childNodes[i].tagName ?????????#讀取標簽名字
??? d[tag_name]=books[1].childNodes[i].childNodes[0].data ?#讀取標簽值
print(d)????????????? ?#標簽值(文本節點)對于標簽來說是一個子節點

{'title': 'learning Python', 'author': '李四', 'pageNumber': '600'}
for k,v in d.items():
??? print(k,v)

title learning Python

author 李四

pageNumber 600

.data讀取文本節點的值,.data是文本對象的屬性,必須是文本對象才可用.data

.tagname讀取標簽值

element節點在<>中,文本節點是看不見的換行和文字內容

?

  2.
import xml.dom.minidom
from xml.dom.minidom import parse??
DOMTree = xml.dom.minidom.parse(r"e:\book.xml")?  #minidom解析器打開xml文檔并將其解析為內存中的一棵樹
booklist = DOMTree.documentElement  #獲取xml文檔對象,就是拿到樹的根
if booklist.hasAttribute("type") :? #判斷根節點booklist是否有type屬性,有則獲取并打印屬性的值
print(u"Root element is", booklist.getAttribute("type"))??
books = booklist.getElementsByTagName("book")  #獲取booklist對象中所有book節點的list集合
print(u"book節點的個數:", books.length)
for book in books :
??? print("*******************book*******************")
??? if book.hasAttribute("category") :
??????? print(u"category is", book.getAttribute("category"))
#根據節點名title拿到這個book節點下所有的title節點的集合list。
#[0]表示第一個title標簽,因為一個<book>...</book>之間可能會
#定義多個title標簽
??? title = book.getElementsByTagName('title')[0]
??? print("Title is", title.childNodes[0].data)
??? author = book.getElementsByTagName('author')[0]
??? print("author is", author.childNodes[0].data)
??? pageNumber = book.getElementsByTagName('pageNumber')[0]
??? print("pageNumber is", pageNumber.childNodes[0].data)

運行結果:

E:\>python a.py

Root element is science and engineering

book節點的個數: 2

*******************book*******************

category is math

Title is learning math

author is 張三

pageNumber is 561

*******************book*******************

category is Python

Title is learning Python

author is 李四

pageNumber is 600

?

9) node.haschildNodes():判斷是否有子節點

判斷節點node下是否有葉子節點,如果有返回True,否則返回False。但是需要注意的是,每個節點都默認有一個文本葉子節點,所以標簽后面有值,就返回True,只有當標簽后沒值時并且也沒有葉子節點時才會返回False.

import xml.dom.minidom

from xml.dom.minidom import parse

#minidom解析器打開xml文檔并將其解析為內存中的一棵樹

DOMTree = xml.dom.minidom.parse(r"e:\book.xml")

#獲取xml文檔對象,就是拿到樹的根

booklist = DOMTree.documentElement

#獲取booklist對象中所有book節點的list集合

books = booklist.getElementsByTagName("book")

print(u"book節點的個數:", books.length)

book節點的個數: 2

print(books[0])

<DOM Element: book at 0x21a3acd06d0>

if books[0].hasChildNodes():

??? print(u"存在葉子節點\n", books[0].childNodes)

else :

??? print(u"不存在葉子節點")

存在葉子節點

?[<DOM Text node "'\n'">, <DOM Element: title at 0x21a3acd0768>, <DOM Text node "'\n'">, <DOM Element: author at 0x21a3acd0800>, <DOM Text node "'\n'">, <DOM Element: pageNumber at 0x21a3acd0898>, <DOM Text node "'\n'">]

?

?

14、xml.dom創建xml文件

創建xml文件的步驟如下:

1. 創建xml空文檔(在內存中創建,未在本地生成一個文檔)

2. 產生根對象

3. 往根對象里加數據

4. 把xml內存對象寫到文件

?

  1) minidom.Document():創建xml空白文檔

該方法用于創建一個空白的xml文檔,并返回這個doc對象

每個xml文檔都是一個Document對象,代表著內存中的DOM樹。

>>> import xml.dom.minidom

>>> doc = xml.dom.minidom.Document()?? #創建空白xml文檔

>>> print(doc)

<xml.dom.minidom.Document object at 0x00000172BBBDCAC8>

?

  2) doc.createElement(tagName):創建xml文檔根節點

生成xml文檔節點。參數表示要生成節點的名稱

>>> import xml.dom.minidom

>>> doc = xml.dom.minidom.Document()

>>> print(doc)

<xml.dom.minidom.Document object at 0x00000172BBBDCAC8>

>>> root = doc.createElement("Manegers")

>>> print(u"添加的xml的標簽為:",root.tagName)

添加的xml的標簽為: Manegers???? #同樣未寫到文件中,保存在內存中。

?

?? 3) node.setAttribute(attname,value):添加節點屬性值對

參數說明:

attname:屬性的名稱

value: 屬性的值

>>> root.setAttribute("company","xx科技")

>>> value = root.getAttribute("company")

>>> print("root元素的company的屬性值是:",value)

root元素的company的屬性值是: xx科技

?

?? 4) doc.createTextNode(data):添加文本節點

>>> ceo = doc.createElement("CEO")?? #CEO節點并沒有掛在根節點下

>>> ceo.appendChild(doc.createTextNode("吳總")) #文本節點”吳總”必須依附于element節點ceo下,等價于<CEO>吳總</CEO>

<DOM Text node "'吳總'">

>>> print(ceo.tagName)

CEO

?

 5) doc/parentNode.appendChild(node):添加子節點

將節點node添加到文檔對象doc作為文檔樹的根節點或者添加到父節點parentNode下作為其子節點。

import xml.dom.minidom

doc = xml.dom.minidom.Document()?? #在內存中創建一個空的文檔

root = doc.createElement('companys') ?#創建一個根節點company對象

root.setAttribute('name', u'公司信息')? ?# 給根節點root添加屬性

doc.appendChild(root)?????????????? #將根節點添加到文檔對象中

company = doc.createElement('gloryroad') # 給根節點添加一個葉子節點

name = doc.createElement("Name") ??# 葉子節點下再嵌套葉子節點

name.appendChild(doc.createTextNode(u"光榮之路教育科技公司"))#給節點添加文本節點

ceo = doc.createElement('CEO')

ceo.appendChild(doc.createTextNode(u'吳總'))

company.appendChild(name) ?#將各葉子節點添加到父節點company中

company.appendChild(ceo)

root.appendChild(company) ??#然后將company添加到跟節點companys中

print(doc.toxml())

<?xml version="1.0" ?>

<companys name="公司信息">

<gloryroad>

<Name>光榮之路教育科技公司</Name>

<CEO>吳總</CEO>

</gloryroad>

</companys>

?

6) doc.writexml():生成xml文檔

函數原型:

writexml(writer,indent = “”,addindent = “”,newl = “”,encoding=None)

該方法用于將內存中xml文檔樹寫入文件中,并保存在本地磁盤

參數說明:

writer:要寫的目標文件的文件對象

indent:指明根節點縮進方式

addindent:指明子節點縮進方式

newl:針對新行,指明換行方式

encoding:指明所寫xml文檔的編碼

?

import xml.dom.minidom

doc = xml.dom.minidom.Document()?? #在內存中創建一個空的文檔

root = doc.createElement('companys') ?#創建一個根節點company對象

root.setAttribute('name', u'公司信息')? ?# 給根節點root添加屬性

doc.appendChild(root)?????????????? #將根節點添加到文檔對象中

company = doc.createElement('gloryroad') # 給根節點添加一個葉子節點

name = doc.createElement("Name") ??# 葉子節點下再嵌套葉子節點

name.appendChild(doc.createTextNode(u"光榮之路教育科技公司"))#給節點添加文本節點

ceo = doc.createElement('CEO')

ceo.appendChild(doc.createTextNode(u'吳總'))

company.appendChild(name) ?#將各葉子節點添加到父節點company中

company.appendChild(ceo)

root.appendChild(company) ??#然后將company添加到根節點companys中

fp = open(“e:\\company.xml”,”w”,encoding = “utf-8”)

doc.writexml(fp,indent=‘ ’,addindent=”\t”,newl=”\n”,encoding =”utf-8”)

fp.close()? #indent=” ”是對根節點生效的。可以看見下面的結果根節點前有個” ”

在e:\\company.xml的文件顯示的內容是:

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

?<companys name="公司信息">

??? <gloryroad>

???????????? <Name>光榮之路教育科技公司</Name>

???????????? <CEO>吳總</CEO>

? ??? </gloryroad>

?</companys>

?

?

15、xml.dom創建xml的完整實例

import xml.dom.minidom

#在內存中創建一個空的文檔

doc = xml.dom.minidom.Document()

?

#創建一個根節點Managers對象

root = doc.createElement('Managers')

?

#設置根節點的屬性

root.setAttribute('company', 'xx科技')

root.setAttribute('address', '科技軟件園')

?

#將根節點添加到文檔對象中

doc.appendChild(root)

?

managerList = [{'name' : 'joy', 'age' : 27, 'sex' : '女'},

{'name' : 'tom', 'age' : 30, 'sex' : '男'},

{'name' : 'ruby', 'age' : 29, 'sex' : '女'} ]

?

for i in managerList :

??? nodeManager = doc.createElement('Manager')

?? ?nodeName = doc.createElement('name')

??? #給葉子節點name設置一個文本節點,用于顯示文本內容

??? nodeName.appendChild(doc.createTextNode(str(i['name'])))

??? nodeAge = doc.createElement("age")

??? nodeAge.appendChild(doc.createTextNode(str(i["age"])))

??? nodeSex = doc.createElement("sex")

??? nodeSex.appendChild(doc.createTextNode(str(i["sex"])))

??? #將各葉子節點添加到父節點Manager中,

??? #最后將Manager添加到根節點Managers中

??? nodeManager.appendChild(nodeName)

??? nodeManager.appendChild(nodeAge)

??? nodeManager.appendChild(nodeSex)

??? root.appendChild(nodeManager)

?

#開始寫xml文檔

fp = open('e:\\Manager.xml', 'w')

doc.writexml(fp, indent='\t', addindent='\t', newl='\n', encoding="utf-8")

fp.close()

Manager.xml文件的內容是:

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

?????? <Managers address="科技軟件園" company="xx科技">

????????????? <Manager>

???????????????????? <name>joy</name>

???????????????????? <age>27</age>

???????????????????? <sex>女</sex>

????????????? </Manager>

????????????? <Manager>

???????????????????? <name>tom</name>

???????????????????? <age>30</age>

???????????????????? <sex>男</sex>

????????????? </Manager>

????????????? <Manager>

???????????????????? <name>ruby</name>

???????????????????? <age>29</age>

???????????????????? <sex>女</sex>

????????????? </Manager>

?????? </Managers>

?

?

?

16. Etree

movies.xml:

<collection shelf="New Arrivals">

<movie title="Enemy Behind">

?? <type>War, Thriller</type>

?? <format>DVD</format>

?? <year>2003</year>

?? <rating>PG</rating>

?? <stars>10</stars>

?? <description>Talk about a US-Japan war</description>

</movie>

<movie title="Transformers">

?? <type>Anime, Science Fiction</type>

?? <format>DVD</format>

?? <year>1989</year>

?? <rating>R</rating>

?? <stars>8</stars>

?? <description>A schientific fiction</description>

</movie>

<movie title="Trigun">

?? <type>Anime, Action</type>

?? <format>DVD</format>

?? <episodes>4</episodes>

?? <rating>PG</rating>

?? <stars>10</stars>

?? <description>Vash the Stampede!</description>

</movie>

<movie title="Ishtar">

?? <type>Comedy</type>

?? <format>VHS</format>

?? <rating>PG</rating>

?? <stars>2</stars>

?? <description>Viewable boredom</description>

</movie>

</collection>

?

1). 遍歷xml文件:

import sys
try:
??? import
xml.etree.cElementTree as ET ?#as ET作為別名,是用c語言寫的Etree的包,比不帶c的包快,但是有可能這個包沒有
except ImportError:
??? import
xml.etree.ElementTree as ET? ?#如果沒有,就引入不帶c的包

tree = ET.ElementTree(file='e:\\movies.xml') #打開movies.xml文件
root=tree.getroot()?? #獲取根節點

#<Element 'collection' at 0x0000024FA6D96B88>
print (root.tag)???? ?#獲取根節點的標簽

#collection
print (root.attrib)? ?#獲取根節點的屬性值,返回值是字典
#{'shelf': 'New Arrivals'}

print (root.attrib[“shelf”])? #獲取指定屬性的屬性值

#New Arrivals


for child_of_root in root:? #獲取root下一級的子節點,并打印標簽和屬性
??? print (child_of_root.tag)
??? print ("********", child_of_root.attrib)

?

#movie

#******** {'title': 'Enemy Behind'}

#movie

#******** {'title': 'Transformers'}

#movie

#******** {'title': 'Trigun'}

#movie

#******** {'title': 'Ishtar'}

print ("*"*50)

# **************************************************
print (root[0].tag)???? #打印一個movie

#movie
print (root[0].text) ???#第一個movie的文本節點,“打印的內容為一個回車”

??????????????????????? #打印內容為一個回車
print (root[0][0].tag)? #獲取第一個movie下面的子節點的標簽

#type
print (root[0][0].text) #獲取第一個movie下面的子節點的文本內容
# War, Thriller
print ("*"*50)

**************************************************
for elem in tree.iter():? #遞歸遍歷所有子元素
??? print (elem.tag, elem.attrib)
#collection {'shelf': 'New Arrivals'}

#movie {'title': 'Enemy Behind'}

#type {}

#format {}

#year {}

#rating {}

#stars {}

#description {}

#movie {'title': 'Transformers'}

#type {}

#format {}

#year {}

#rating {}

#stars {}

#description {}

#movie {'title': 'Trigun'}

#type {}

#format {}

#episodes {}

#rating {}

#stars {}

#description {}

#movie {'title': 'Ishtar'}

#type {}

#format {}

#rating {}

#stars {}

#description {}
print ("*"*50)

**************************************************
for elem in tree.iterfind('movie/type'):#查找movie下一級節點中的所有type標簽 ,XPATH的應用場景
??? print (elem.tag, elem.attrib)
#type {}

#type {}

#type {}

#type {}
print ("*"*50)

**************************************************
for elem in tree.iter(tag='stars'):#在整個樹中查找標簽為star的元素
??? print (elem.tag, elem.attrib)

#stars {}

#stars {}

#stars {}

#stars {}
print ("*"*50)

#**************************************************
for elem in tree.iterfind('*[@title="Ishtar"]'): #查找屬性為title="Ishtar"的元素,iterfind是個迭代器
??? print (elem.tag, elem.attrib)
#movie {'title': 'Ishtar'}
print ("*"*50)

#**************************************************
for elem in tree.iterfind('movie[@title="Ishtar"]'): #查找movie下屬性為title="Ishtar"的元素
??? print (elem.tag, elem.attrib)
#movie {'title': 'Ishtar'}
print ("-"*50)

#--------------------------------------------------

root = tree.getroot()???????????????
print ("root:",root[0].tag? )????????? #打印第一級movie元素的標簽,為movie
print ("subnode:",root[0][0].tag)????? #打印第一級movie元素下的第一個子元素標簽type
print ("subnode:",root[0][1].tag )???? #打印第一級movie元素下的第二個子元素標簽format
print ("subnode:",root[0][2].tag )???? #打印第一級movie元素下的第三個子元素標簽year
print ("subnode:",root[0][3].tag )???? #打印第一級movie元素下的第四個子元素標簽rating
print ("subnode:",root[0][4].tag )???? #打印第一級movie元素下的第五個子元素標簽stars
del root[0][4] #刪除第一級movie元素下的第四個子元素
del root[0][3] #刪除第一級movie元素下的第三個子元素
del root[0][2] #刪除第一級movie元素下的第二個子元素
del root[0][1] #刪除第一級movie元素下的第一個子元素

del root[3] #刪除第四個movie元素
del root[2] #刪除第三個movie元素


for subelem in root:
???
print (subelem.tag, subelem.attrib)? #打印四個movie元素的標簽和屬性

tree.write("d:\\movies.xml")? #將變更的xml文件寫入到文件中

?

2) 新建一個xml 文件:

import sys
try:
??? import
xml.etree.cElementTree as ET
except ImportError:
??? import
xml.etree.ElementTree as ET

a = ET.Element('elem')??????????? #生成一個節點elem,沒有文本節點
c = ET.SubElement(a, 'child1')??? #生成一個子節點下的子節點child1
c.text = "some text"????????????? #在子節點上添加文本節點
d = ET.SubElement(a, 'child2')??? #生成一個子節點下的子節點child2
b = ET.Element('elem_b')????????? #生成一個節點elem_b,沒有文本節點
root = ET.Element('root')???????? #生成一個節點root
root.extend((a, b))?????????????? #將a、b兩個變量存儲的節點elem和elem1添加到root節點下
tree = ET.ElementTree(root)?????? #生成節點樹
root[0].set('foo', 'bar')???????? #設定第一個子元素的屬性foo,值為bar

tree.write("d:\\test.xml")??????? #將xml文件內容寫入到文本文件中

?

3) 邊讀邊解析xml文件

#coding=utf-8
import sys
try:
??? import
xml.etree.cElementTree as ET
except ImportError:
??? import
xml.etree.ElementTree as ET

tree = ET.parse("d:\\movies.xml")

count = 0
for elem in tree.iter(tag='movie'): #遍歷樹中的movie節點
??? print (elem.tag)
??? if elem[0].text == 'War, Thriller':
???????
count += 1
print (count)



#以下代碼實現了邊讀文件邊解析的作用,節省了內存
count = 0
for event, elem in ET.iterparse("d:\\movies.xml"):? #遍歷所有xml文件中的標簽
??? #print (elem.tag)
??? if event == 'end':? #檢測“閉合的”(end)事件,標簽關閉
??????? if elem.tag == 'type' and elem.text == 'War, Thriller':? #標簽為type,且文本內容為War, Thriller ,則count+1
??????????? count += 1
??? elem.clear() #清除元素內容,不清除則整個兒樹也會在內存中,沒有起到節省內存的作用。

print (count)

#事件
#start 在元素打開時觸發。數據和元素的子元素仍不可用。
# end 在元素關閉時觸發。所有元素的子節點,包括文本節點,現在都是可用的。
#close 在解析完成后觸發。

?

?

小練習:

獲取database.xml文件中的host\username\assword\databasename的值。

databases.xml:

<databaselist type="database config">

<database>

<host>localhost</host>

<username>root</username>

<password>11111</password>

<datasename>wulaoshi</datasename>

</database>

</databaselist>

?

程序:

from xml.dom.minidom import parse ??????#從xml.dom.minidom模塊引入解析器parse

DOMTree = parse(r"e:\databases.xml")?? ?#minidom解析器打開xml文檔并將其解析為內存中的一棵樹

databaselist = DOMTree.documentElement

database = databaselist.getElementsByTagName("database")

print(database)

[<DOM Element: database at 0x1e873fa6638>]

d={}

for i in range(1,8,2):

? ? tag_name = database[0].childNodes[i].tagName

? ? d[tag_name]=database[0].childNodes[i].childNodes[0].data

print(d)

{'host': 'localhost', 'username': 'root', 'password': '11111', 'datasename': 'wulaoshi'}

============================

方法1:

for k,v in d.items():

print(k,v)

host localhost

username root

password 11111

datasename wulaoshi

==============================

方法2:

host = d["host"]

username = d["username"]

password = d["password"]

datasename = d["datasename"]

print(host)

==============================

?

轉載于:https://www.cnblogs.com/suitcases/p/11043575.html

總結

以上是生活随笔為你收集整理的python进阶(十七)xml(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

在线观看视频97 | 黄色一及电影 | 一区二区网 | 国产精品乱码高清在线看 | 四虎国产精品成人免费4hu | 网站在线观看日韩 | 成人夜晚看av | 99精品视频免费全部在线 | 91x色| 狠狠色丁香婷婷综合欧美 | 2019中文最近的2019中文在线 | 午夜视频在线观看一区二区 | 亚洲涩综合 | 日韩av资源在线观看 | 中文字幕一二 | 日本精品视频免费 | 日韩欧美视频一区二区 | 色婷婷综合视频在线观看 | 黄视频网站大全 | 久久久久久久久久网站 | 偷拍久久久 | 99在线视频播放 | 久草9视频 | 亚洲综合丁香 | 婷婷婷国产在线视频 | 99在线视频观看 | 玖玖玖在线 | 中文字幕第一页在线视频 | 国产精品一区二区麻豆 | 黄色成人av | 日韩中文字幕在线观看 | 欧美一级视频免费看 | 99精品久久精品一区二区 | a黄色片| 国产成人精品亚洲日本在线观看 | 亚洲 欧美 国产 va在线影院 | 国产精品免费观看网站 | 国产成人亚洲在线观看 | 国产精品欧美久久久久三级 | 日韩精品欧美专区 | 亚洲天天综合 | 99re6热在线精品视频 | 亚洲精品在线观看的 | 99热9 | 婷婷成人亚洲综合国产xv88 | 国产午夜精品av一区二区 | 久久久久久久久久久国产精品 | 久久九九久久 | 激情六月婷婷久久 | 国语精品免费视频 | 黄色日本免费 | 天天射网 | 超碰在线中文字幕 | 国产 日韩 欧美 自拍 | 中文字幕在线观看免费 | 亚洲欧美日韩国产精品一区午夜 | 久草在线资源网 | 999在线精品 | 国产人免费人成免费视频 | 一级成人网 | 国产成人一区二区精品非洲 | 亚洲最大成人免费网站 | 日韩中文字幕第一页 | 久草在线国产 | 正在播放日韩 | 成人国产精品久久久久久亚洲 | 五月婷在线播放 | 黄色亚洲在线 | 国产视频1 | 国产精品第二页 | 狠狠色香婷婷久久亚洲精品 | 久久久久久福利 | 国产精品99久久久久久小说 | 男女啪啪免费网站 | 中日韩欧美精彩视频 | 免费一级日韩欧美性大片 | 天天色天天爱天天射综合 | 亚洲不卡av一区二区三区 | 免费特级黄毛片 | 永久免费在线 | 日韩久久一区二区 | 久久福利国产 | 亚洲人成网站精品片在线观看 | 国产黄在线看 | 午夜精品一区二区三区免费视频 | 国产精品久久久久久久久久久久 | 操操操人人人 | 蜜臀久久99精品久久久酒店新书 | 欧美久久久久久久久 | 国产精品99爱 | 国产精品视频区 | 国产在线高清视频 | 欧美日韩不卡在线观看 | 麻豆视频成人 | 四虎影视成人永久免费观看亚洲欧美 | 国产精品视频最多的网站 | 九九热精品在线 | 97超碰超碰久久福利超碰 | 国产日韩欧美中文 | 毛片一区二区 | 欧美综合色在线图区 | 中文字幕精品视频 | 在线网站黄| 国产精品一区二区白浆 | 在线观看国产麻豆 | 免费日韩在线 | 久久久精品影视 | 91av99| 国产aa免费视频 | 草久久av | 日韩av影片在线观看 | 久久综合99 | 国产免费高清视频 | 久久亚洲婷婷 | 99国产在线视频 | 欧美伦理电影一区二区 | 免费一级片久久 | 精品国产自在精品国产精野外直播 | 国产亚洲情侣一区二区无 | 911免费视频 | 久久超级碰视频 | 亚洲黄色一级视频 | 国产一区高清在线 | 国产精品福利一区 | 五月婷婷.com | 久二影院 | 91av视频在线观看免费 | 亚洲高清视频在线播放 | 国产拍在线 | 欧美色精品天天在线观看视频 | 狠色狠色综合久久 | 亚洲国产精久久久久久久 | 91看片在线观看 | 人人插人人射 | 国产精品都在这里 | 91精品国产99久久久久久久 | 丁香午夜婷婷 | 成人免费观看视频网站 | 制服丝袜在线 | 丁香婷婷激情 | 免费久久99精品国产婷婷六月 | 久久综合影院 | 国产精品一区二区62 | 日韩精品aaa | 欧美日韩免费在线观看视频 | 狠狠狠狠狠狠狠干 | 欧美日韩不卡在线视频 | 婷婷久久一区二区三区 | 亚洲国产精彩中文乱码av | 激情av一区二区 | 天天se天天cao天天干 | 91精品国自产在线观看欧美 | 天天干天天操天天爱 | 国产色婷婷精品综合在线手机播放 | 亚洲高清久久久 | 久草视频免费在线观看 | 国产视频中文字幕 | 在线免费观看一区二区三区 | 97碰在线 | 欧美成人精品三级在线观看播放 | 精品视频在线免费 | 五月天视频网 | 黄色在线观看污 | 色婷婷亚洲综合 | 国产精品v欧美精品 | 日韩精品免费在线观看 | 黄色在线免费观看网址 | 久久免费视频7 | 国产成人av综合色 | 国产一级在线播放 | 色橹橹欧美在线观看视频高清 | 精品亚洲视频在线 | 麻花传媒mv免费观看 | 国产中文字幕网 | 91在线观看高清 | 国产在线最新 | 在线观看免费版高清版 | 99免费看片| 久久字幕精品一区 | 精品国产综合区久久久久久 | 黄色特级毛片 | 日韩精品一区二区三区免费观看视频 | 久久成人亚洲欧美电影 | 丁香六月激情婷婷 | 日韩av电影手机在线观看 | 久草在线综合网 | 婷婷六月在线 | 国产精品乱码久久久久久1区2区 | 亚洲伊人成综合网 | 久久免费视频在线观看6 | 免费在线成人av电影 | 天天干视频在线 | 免费av网站在线看 | 色综合久久久 | 91精品伦理 | 成人在线网站观看 | 手机在线免费av | 好看的国产精品视频 | 亚洲男男gⅴgay双龙 | 在线观看a视频 | 午夜天天操 | 福利视频一区二区 | 亚洲二级片 | 天堂av在线 | 午夜精品久久久久久久久久久久久久 | 欧美日韩在线观看一区二区三区 | 久久在线看 | 国产日韩亚洲 | 精品视频亚洲 | 久操视频在线免费看 | 91av片| 麻豆久久 | 中文字幕在线观看不卡 | 国产精品尤物视频 | 91高清在线| 精品欧美小视频在线观看 | 免费激情网 | 国产九九热视频 | 精品欧美一区二区三区久久久 | 中文字幕视频观看 | 91精品视频一区二区三区 | 岛国av在线免费 | 久草在在线视频 | 婷婷激情五月 | 亚洲一区二区高潮无套美女 | 在线观看免费黄色 | 狠狠综合网 | 91精品国产91p65 | 精品 一区 在线 | 欧美精品中文在线免费观看 | 国模一二三区 | 久久黄色成人 | 久热免费在线 | 久久蜜臀一区二区三区av | 韩日av在线| 成人午夜电影网站 | 狠狠干网站 | 国产一区二区久久久久 | 波多野结衣视频一区二区 | 婷婷色婷婷 | 国产综合久久 | japanesexxxhd奶水 91在线精品一区二区 | 波多野结衣亚洲一区二区 | 欧美性春潮 | 久久五月婷婷综合 | 99热超碰在线 | 黄色精品一区 | 四虎成人精品永久免费av九九 | 久久久久久久久久久黄色 | 国产精品久久久久9999吃药 | 久久艹艹 | 成人一区二区在线观看 | 97操操| 蜜桃视频成人在线观看 | 亚洲第一伊人 | 在线视频 你懂得 | 中国一 片免费观看 | 久久69精品 | 精品女同一区二区三区在线观看 | 97超碰.com | 国产精品大片 | 亚洲日日日 | 欧美日韩高清一区二区 国产亚洲免费看 | 免费视频99| 国内精自线一二区永久 | 91在线精品视频 | 久久久99国产精品免费 | 久久99热精品这里久久精品 | 69精品久久 | 99视频在线观看免费 | 粉嫩av一区二区三区四区在线观看 | 在线观看亚洲专区 | 精品中文字幕在线 | 久久福利综合 | 欧美精品久久人人躁人人爽 | 日韩欧美国产精品 | 国产欧美精品一区二区三区四区 | 在线成人免费电影 | 日韩一区二区三区不卡 | 精品免费久久久久久 | 日韩动漫免费观看高清完整版在线观看 | 涩涩网站在线播放 | 91九色视频国产 | 日韩色中色 | 午夜私人影院 | 欧美成人一二区 | 色综合天天色 | 美腿丝袜av| 免费在线观看视频一区 | 色综合天天狠天天透天天伊人 | 综合网色| 久久国产精品99久久久久久丝袜 | 日本在线视频一区二区三区 | 99中文视频在线 | 日韩一区二区三区免费视频 | av资源网在线播放 | 99久久国产免费,99久久国产免费大片 | 国产福利资源 | 中文字幕在线免费 | 一区二区三区在线播放 | 日韩电影久久久 | 免费在线一区二区 | 九色91视频| 偷拍视频一区 | 欧洲成人免费 | 9999亚洲| 亚洲成人资源在线观看 | 久久久精品高清 | 天天爱天天操天天爽 | 国产精品欧美激情在线观看 | 在线电影 你懂得 | 波多野结衣视频一区二区三区 | 久久精品国产v日韩v亚洲 | 日产av在线播放 | 精品在线不卡 | 婷婷色网站 | 国产欧美在线一区二区三区 | 99色在线视频 | 久久久久久免费毛片精品 | 久久99亚洲网美利坚合众国 | 在线免费观看一区二区三区 | 91视频免费 | 中文免费观看 | 狠狠色伊人亚洲综合网站野外 | 国产免码va在线观看免费 | 色妞色视频一区二区三区四区 | 在线一区av | 992tv人人草 黄色国产区 | 日韩特黄一级欧美毛片特黄 | 国产精品1区2区在线观看 | 欧美日本高清视频 | 最新在线你懂的 | 色丁香婷婷 | 精品国产伦一区二区三区观看方式 | 视频一区二区国产 | 成人一级在线观看 | 国产亚洲在线 | 久草资源免费 | 精品一区久久 | av在线免费网| 丁香六月婷婷激情 | 超碰人人草 | 日韩在线小视频 | 中文字幕 第二区 | 久久国产影视 | 亚洲精品国偷拍自产在线观看 | 黄色片视频在线观看 | 日韩资源视频 | 中文字幕 在线看 | 美女性爽视频国产免费app | 91精品国产麻豆国产自产影视 | 亚洲午夜剧场 | 日韩三级免费观看 | 91视频国产高清 | 国产伦理一区二区三区 | 欧洲视频一区 | 少妇av片 | 日韩欧美在线高清 | 最近的中文字幕大全免费版 | 国产亲近乱来精品 | 国产一级片一区二区三区 | 国产亚洲日本 | 人人爽影院 | 亚洲成人午夜av | 91精品色 | 亚洲国产综合在线 | 免费av小说 | 亚洲视频综合在线 | 免费视频91蜜桃 | 日韩av美女| 欧美日韩一区二区在线 | 色婷婷成人| 欧美视频99 | 在线观看香蕉视频 | 91爱爱视频 | 成年人在线观看视频免费 | 亚洲午夜精品久久久 | 黄色毛片网站在线观看 | 亚洲精品乱码久久久久久写真 | 国产成人一区二区啪在线观看 | 久久久久麻豆v国产 | 成人精品一区二区三区电影免费 | 欧美一级艳片视频免费观看 | 免费av在线网站 | 亚洲美女免费精品视频在线观看 | 国产成人一区二区三区 | 色综合久久久 | 视频二区在线视频 | 97精品国产97久久久久久免费 | 日韩精品在线播放 | 在线播放视频一区 | 狠狠色狠狠色综合系列 | 久久99精品久久久久蜜臀 | 成人在线观看资源 | 一区二区三区四区精品视频 | 日韩欧美在线一区二区 | 81精品国产乱码久久久久久 | 在线看91| 天天干夜夜爱 | 成人一区不卡 | 国内精品国产三级国产aⅴ久 | 中文字幕在线观看国产 | 久久久久久97三级 | 在线免费观看视频a | 成人免费网站在线观看 | 国产99一区视频免费 | 深夜成人av | 日日夜夜精品视频天天综合网 | 美女久久99| 999超碰 | 丁香婷婷激情国产高清秒播 | 成人a v视频 | 91精品日韩 | 激情网色 | 玖玖视频国产 | 一级一片免费看 | 欧美亚洲三级 | 夜色.com | 国产精品色婷婷 | 在线观看视频日韩 | 亚洲激情在线播放 | 国产高清日韩 | 日韩一二区在线 | 一区二区av | 色婷婷亚洲综合 | 91麻豆产精品久久久久久 | 久久99国产精品二区护士 | 国产中文字幕视频在线观看 | 欧美视频在线二区 | 天天摸日日摸人人看 | 免费三及片 | 国精产品999国精产品视频 | 91精品在线免费 | 亚洲精选久久 | 天天操夜夜叫 | 精品国产伦一区二区三区观看说明 | 国产精品粉嫩 | aaa免费毛片 | 国产不卡av在线播放 | 久草在线视频首页 | 精品亚洲国产视频 | 婷婷丁香自拍 | 黄色毛片在线观看 | 免费看污网站 | 亚洲专区 国产精品 | 免费男女羞羞的视频网站中文字幕 | 天天操天天射天天操 | 色在线视频 | 日韩美女av在线 | 一区二区三区四区五区在线 | 国产91精品在线观看 | 韩国av免费观看 | 亚洲码国产日韩欧美高潮在线播放 | 激情综合色播五月 | 黄色免费视频在线观看 | 中文字幕一区二区三区精华液 | 国产精品免费视频一区二区 | 碰碰影院 | 91成人免费视频 | 18av在线视频 | 国产精品theporn| 欧美激情h | 免费高清在线观看成人 | 久久久久久不卡 | 四虎国产精品成人免费4hu | 91成人在线网站 | 国产精品二区三区 | 精品国产伦一区二区三区观看体验 | 免费中文字幕在线观看 | 亚洲成人精品久久 | 亚洲 欧美日韩 国产 中文 | 亚洲最快最全在线视频 | 成人电影毛片 | 伊人五月天.com | 久草男人天堂 | 成人高清在线 | 午夜三级毛片 | 亚洲理论电影 | 中日韩免费视频 | www.夜夜操.com | 亚洲国产三级在线观看 | 免费在线色电影 | 五月天综合激情网 | 97色狠狠| 一二三区av| 99在线精品免费视频九九视 | 国产精品免费视频网站 | 成年人免费观看国产 | 成人av一区二区兰花在线播放 | 久久精品国产精品亚洲精品 | 久久久久视| 中文字幕一区二区三区在线视频 | 青青草在久久免费久久免费 | 在线天堂中文在线资源网 | 日批视频在线播放 | 99久久er热在这里只有精品15 | 天天躁日日躁狠狠躁av中文 | 日本h在线播放 | 99精品欧美一区二区三区 | www.av中文字幕.com | 久久一区精品 | 色香蕉在线视频 | 高清不卡一区二区三区 | 国产一区成人在线 | 亚洲午夜精品一区二区三区电影院 | 五月婷婷精品 | 亚洲免费精品视频 | 大荫蒂欧美视频另类xxxx | 日本丶国产丶欧美色综合 | 国产精品video爽爽爽爽 | 91色吧| 婷婷六月中文字幕 | 亚洲成年片 | 天天操天天干天天操天天干 | 日韩免费看的电影 | 久久国产电影院 | 日韩欧美视频在线 | 欧美成人中文字幕 | 91欧美日韩国产 | 精品国偷自产在线 | 国产免费高清视频 | 色成人亚洲 | 韩日精品在线观看 | 黄网站免费久久 | 99久久免费看 | 欧美成人精品欧美一级乱 | 日日射av | 五月婷婷天堂 | av片在线看 | 国产精品99久久久久久人免费 | 久久99久久99精品免费看小说 | 久久精品1区2区 | 超碰免费久久 | 久久五月天婷婷 | 黄色三级av | 成人免费在线播放视频 | 日韩网站在线看片你懂的 | 国产成人精品一区二 | 夜色成人av | 91成人在线观看喷潮 | 国产视频 久久久 | 五月婷婷激情综合网 | 91久久偷偷做嫩草影院 | 91亚洲国产成人久久精品网站 | 美女在线黄 | 国产精品成人一区二区三区吃奶 | 精品一区二区免费视频 | 国产精品永久在线观看 | 一区二区欧美激情 | 玖玖综合网 | 五月婷婷激情六月 | 国产九九在线 | 免费在线91 | 天天操天天插 | 欧洲色吧 | 在线亚洲人成电影网站色www | 中文字幕二区在线观看 | 亚洲国产影院 | 欧美极品裸体 | 国产精品视频全国免费观看 | 日本黄色一级电影 | 久草在线播放视频 | 久久久久久麻豆 | 狠狠干狠狠色 | 日韩一区二区三区免费视频 | 日韩高清不卡在线 | 奇米影视777四色米奇影院 | 国产在线精品一区二区不卡了 | 亚洲精品视频大全 | 久久久久国产一区二区三区 | 日韩久久网站 | 精品亚洲成人 | 精品无人国产偷自产在线 | 在线观看av中文字幕 | 99精品免费视频 | 五月天,com | 青草草在线视频 | 日韩精品久久中文字幕 | 亚洲国产精品传媒在线观看 | 亚洲综合在线五月天 | 久久99国产视频 | 婷婷五综合 | 视频在线观看91 | 午夜久久视频 | 国产美女被啪进深处喷白浆视频 | 激情综合色综合久久综合 | 奇米先锋| 国产精品自产拍在线观看中文 | 四虎成人精品永久免费av | 亚洲1区在线 | 日韩精品在线免费观看 | 波多野结衣理论片 | 天天天干夜夜夜操 | 精品xxx| 99色在线观看视频 | 超碰公开在线观看 | 国产韩国日本高清视频 | 2021av在线 | 国内精品久久久久 | 国产精品av久久久久久无 | 欧美日韩高清在线观看 | zzijzzij日本成熟少妇 | 激情综合婷婷 | 亚洲尺码电影av久久 | 亚洲欧美视屏 | 日日天天av| 国产亚洲精品久久久久动 | 最新日本中文字幕 | 久久香蕉电影网 | 免费三级黄色片 | 久久草草影视免费网 | 免费福利片2019潦草影视午夜 | 婷婷丁香久久五月婷婷 | 黄色亚洲大片免费在线观看 | 99久久99热这里只有精品 | 免费看网站在线 | 人人爽夜夜爽 | 亚洲精品视频一 | 欧美日韩中文国产 | 国产精品久久久久999 | 色婷婷综合久久久久中文字幕1 | 亚洲免费在线视频 | 日韩在线电影观看 | 中文字幕日韩在线播放 | 精品一二三区 | 欧美日韩91 | 国产精品一区二区三区久久久 | 欧美日韩国产xxx | 久草av在线播放 | 中文字幕大全 | 深夜激情影院 | 99精品在线免费观看 | 狠狠色噜噜狠狠狠狠2022 | 一区二区影视 | 最近免费中文字幕 | 亚洲a色 | 中文一区在线观看 | 日本中文字幕一二区观 | 日韩最新在线视频 | av福利网址导航 | 国产对白av| 玖玖精品在线 | 国产精品岛国久久久久久久久红粉 | 欧美性粗大hdvideo | 肉色欧美久久久久久久免费看 | 欧美91视频 | 亚洲欧美日本一区二区三区 | aaa毛片视频 | 国产香蕉视频在线观看 | 天天插天天色 | 久久久精品国产一区二区 | 黄色一级性片 | 日韩乱码中文字幕 | 精品国产精品一区二区夜夜嗨 | 日韩在线视频观看 | 999成人免费视频 | 91精选在线 | 欧美精品久久久久久久久久白贞 | 18岁免费看片 | 国产区网址 | 国产日韩精品一区二区在线观看播放 | 美女福利视频在线 | 久久久久福利视频 | 久久一区国产 | 日韩xxxx视频 | 中文字幕 婷婷 | 久热爱 | 午夜国产在线观看 | 人人干狠狠操 | 国产精品毛片久久 | 99久久精品国产欧美主题曲 | 成人av一区二区在线观看 | 欧美日韩国产精品一区二区 | 成人av.com | 国产成人精品久久久久 | 国产一区二区在线视频观看 | 欧美一级大片在线观看 | 国产一级一级国产 | 国产无套一区二区三区久久 | 久久久精品久久日韩一区综合 | 色噜噜日韩精品一区二区三区视频 | 精品免费在线视频 | 国产一区在线看 | 日日夜夜噜噜噜 | 国产成人a亚洲精品v | 在线综合色 | 婷婷色网视频在线播放 | 国产高清在线精品 | 操久 | 99精品在线观看 | 天天躁天天狠天天透 | 性色在线视频 | 色播五月激情五月 | 香蕉影视app | 在线观看av免费 | 国产精品黄| 国产精品一级在线 | 97在线免费观看视频 | 久久久久夜色 | 日韩黄色大片在线观看 | 国产精品视频app | 日本成址在线观看 | 欧美色图狠狠干 | 在线视频 亚洲 | 久久精品美女 | 久久久久久久久久伊人 | 国产小视频在线观看免费 | 日韩在线免费视频 | 成人动漫视频在线 | 麻豆va一区二区三区久久浪 | 在线观看播放av | 免费看黄网站在线 | 免费看污的网站 | 成人av电影免费在线播放 | 欧美男女爱爱视频 | 国产精品久久久久久久久久 | 婷婷精品国产欧美精品亚洲人人爽 | www.狠狠操 | 狂野欧美激情性xxxx欧美 | 中文一区在线观看 | 久草在线免费电影 | 国产资源在线播放 | 亚洲精品理论片 | 久久国产一区二区三区 | 不卡的av在线 | 免费国产一区二区 | 国产成人一区三区 | 国产精品乱码一区二三区 | 日批在线观看 | 欧美日韩视频在线观看免费 | 国产精品免费观看网站 | 91成人免费电影 | 五月激情综合婷婷 | 色播五月婷婷 | 99精品欧美一区二区 | 国产精品毛片久久 | 人人干天天干 | 亚洲激情视频在线观看 | 久久久免费精品国产一区二区 | 日韩免费观看一区二区三区 | 欧美日韩在线观看视频 | 亚洲黄色小说网 | 成人亚洲综合 | 日韩免费观看视频 | 久久影视一区二区 | 天天色成人 | 欧洲一区精品 | 欧美精品xx | 激情五月看片 | 日韩在线高清免费视频 | 国产成人精品免费在线观看 | 国产91免费在线 | 一二三区在线 | 伊人欧美 | 日本公妇色中文字幕 | 欧洲一区二区在线观看 | 高潮毛片无遮挡高清免费 | 毛片一区二区 | 久久久久久久久久久高潮一区二区 | 99精品一级欧美片免费播放 | 国产亚洲一区二区三区 | 在线午夜 | 五月天综合色 | 日本中文乱码卡一卡二新区 | 亚洲精区二区三区四区麻豆 | 伊人国产女 | 97电院网手机版 | 国产精品日韩 | 色综合久久久久久久久五月 | 91视频高清完整版 | 久久这里有精品 | 日日爱视频 | 四虎在线观看 | 久久视屏网 | 在线观看成人网 | 国产精品99页 | 男女免费视频观看 | 九9热这里真品2 | 四川妇女搡bbbb搡bbbb搡 | 午夜精品一区二区三区视频免费看 | 国产精品video爽爽爽爽 | 天天射天天操天天色 | 国产精品中文字幕在线播放 | 国产一区高清在线观看 | 国产精品国产三级国产aⅴ9色 | 蜜臀av在线一区二区三区 | 亚洲国产激情 | 天天干天天想 | 欧美成年网站 | 国产精品久久久久久吹潮天美传媒 | 激情丁香5月 | 狠狠色2019综合网 | 国产专区一 | 欧美婷婷色 | 欧美日韩xxxxx | 天天在线视频色 | 国产精品女视频 | 福利二区视频 | 成人午夜网址 | 亚洲国产欧美一区二区三区丁香婷 | av先锋中文字幕 | 国产999在线 | 国产尤物在线观看 | 欧美99热 | 久久字幕精品一区 | 久久精品久久久久 | 久久色亚洲 | 免费在线观看一区二区三区 | 黄污在线看 | 欧美国产日韩久久 | 成全免费观看视频 | 在线观看的av网站 | 亚洲精品91天天久久人人 | 亚洲视频精品 | 国产蜜臀av | 中文字幕区 | 国产麻豆剧果冻传媒视频播放量 | 国产午夜三级一区二区三桃花影视 | 成人av影视 | 亚洲国产综合在线 | 国产做aⅴ在线视频播放 | 日韩在线播放视频 | 亚洲天天摸日日摸天天欢 | 亚洲1区 在线 | 在线视频日韩 | 在线视频观看成人 | 少妇视频一区 | 日韩成片 | 97香蕉超级碰碰久久免费软件 | 日韩色av色资源 | av福利在线| 国产一区二区久久久久 | 91精品国自产在线偷拍蜜桃 | 国产中文字幕在线播放 | 国产一区二三区好的 | 久久久久久久久久久久久国产精品 | 国产精品视频全国免费观看 | 麻豆视频免费看 | 国产成人精品午夜在线播放 | 超碰免费av| 成人av资源站 | 超碰在线日韩 | 91网免费观看 | 美女久久网站 | 日韩亚洲国产精品 | 蜜臀av免费一区二区三区 | 国产女v资源在线观看 | 国产精品久久久久久a | 日韩成人在线一区二区 | 狠狠色丁香久久婷婷综合丁香 | 国产黄a三级三级 | 日韩大陆欧美高清视频区 | 天天干,天天射,天天操,天天摸 | 欧美激情视频一二区 | 黄污在线观看 | 伊人天天| 久久成人国产精品免费软件 | 在线日韩中文字幕 | 久久这里只有精品视频99 | 深爱五月激情五月 | 国产成人精品国内自产拍免费看 | 成人免费视频在线观看 | 97视频在线 | 中文字幕视频在线播放 | 国产美女精品视频 | 午夜精品久久久久 | 国产成人在线网站 | 日韩素人在线观看 | 免费看的国产视频网站 | 成人av手机在线 | 最新av网站在线观看 | 在线视频你懂得 | 精品字幕 | 五月天六月丁香 | 一区二区三区观看 | 99久久夜色精品国产亚洲 | av片免费播放 | 一区二区三区日韩在线 | 亚洲伊人网在线观看 | 丁香伊人网 | 婷婷久久亚洲 | 天天操天天操天天操天天操天天操 | 西西444www大胆无视频 | 91av在线免费视频 | 久久久免费精品视频 | 五月婷婷综合激情网 | 一级片视频在线 | 久99视频| 四虎在线观看 | 五月天av在线| 91丨九色丨蝌蚪丰满 | 四虎在线永久免费观看 | 欧美三级在线播放 | 日本精品va在线观看 | 99999精品视频 | 亚洲精品国产精品国自产观看 | 激情动态 | 99视频+国产日韩欧美 | 精品在线视频一区二区三区 | 国产精品入口麻豆 | 808电影免费观看三年 | 久久精品4 | av大片网址 | 97超碰精品 | 精品久久久久久久久久久久久久久久 | 奇米影视777四色米奇影院 | 亚洲激情国产精品 | 成人cosplay福利网站 | 国产成人中文字幕 | 久久99久久99精品中文字幕 | 日韩精品亚洲专区在线观看 | 91私密视频 | 又黄又爽又色无遮挡免费 | www视频在线播放 | 国产免费久久av | 午夜体验区 | 337p欧美| 免费日韩视 | 色wwwww| 91视频中文字幕 | 日韩精品一卡 | 国产精品免费观看在线 | 日韩欧美高清一区二区三区 | 中文字幕在线观看免费高清电影 | 久久精品视频国产 | av色网站 | www黄色软件 | 国产中文字幕免费 | 91中文字幕 | 三级a毛片| 黄色毛片在线看 | 日韩在线理论 | 久久久受www免费人成 | 高清在线一区 | 在线视频中文字幕一区 | 精品在线不卡 | av片中文字幕| 亚洲日日日 | 天天爱天天干天天爽 | 国产99在线| 二区三区中文字幕 | 欧美不卡视频在线 | 麻豆久久一区二区 | 日日操狠狠干 | 中文字幕一二三区 | 人人看人人艹 | 成人av电影免费观看 | 欧洲av不卡 | 色夜影院 | 中文字幕在线观看完整版电影 | 99久久精品免费看国产麻豆 | 久草在线| 中文伊人 | 特级西西444www大精品视频免费看 | 久久爽久久爽久久av东京爽 | 国产超碰在线 | 亚洲免费在线观看视频 | 久久在线看 | 天天干天天草 | 日本视频久久久 | 天天操天天添天天吹 | 国产成人精品久 | 国产视频第二页 | 国产成人亚洲在线电影 | 亚洲一区二区麻豆 | 国产福利免费看 | 国产精品久久久久亚洲影视 | 久久免费大片 | 在线电影日韩 | 色狠狠婷婷 | 亚洲一区精品人人爽人人躁 | 黄污视频网站大全 | 99精品视频一区二区 | 精品欧美一区二区三区久久久 | 国产精品2018 | 欧亚久久 | 久久免费99精品久久久久久 | 91成年人在线观看 | 久久精品中文字幕少妇 | 99视频在线精品国自产拍免费观看 | 色中文字幕在线观看 | 在线电影 你懂得 | 亚洲精品国偷自产在线99热 | 国产高清av免费在线观看 | 成人免费xxxxxx视频 | 国产成人99久久亚洲综合精品 | 操操操人人 | 在线黄色国产 | 欧日韩在线| 久久一区国产 | 日韩在线观看高清 | 久久视频国产精品免费视频在线 | 九九色网 | 免费看的黄色录像 | 精品你懂的| 国产精品99久久久久久有的能看 | 一本之道乱码区 | 久久精品成人热国产成 |