etree支持以多種方式和全部重要來源解析XML,即字符串、文件、url(http/ftp)和類文件對象
主要的解析函數是fromstring()和parse(),都是以源做爲第一個參數調用的
默認狀況下,它們使用標準解析器,但您始終能夠將不一樣的解析器做爲第二個參數傳遞html
fromstring()函數函數
some_xml_data = "<root>data</root>" root = etree.fromstring(some_xml_data) print(root.tag) #輸出:root print(etree.tostring(root)) #輸出:b'<root>data</root>'
XML()函數url
root = etree.XML("<root>data</root>") print(root.tag) #輸出:root print(etree.tostring(root)) #輸出:aa
HTML()函數spa
root = etree.HTML("<p>data</p>") print(etree.tostring(root)) #輸出:b'<html><body><p>data</p></body></html>'
parse()函數code
該函數主要用於解析file或file-like對象xml
from io import BytesIO some_file_or_file_like_object = BytesIO(b"<root>data</root>") tree = etree.parse(some_file_or_file_like_object) etree.tostring(tree) #輸入:b'<root>data</root>' root = tree.getroot() print(root.tag) #輸出:root print(etree.tostring(root)) #輸出:b'<root>data</root>'
parse()從文件返回完整的文檔,而字符串解析函數一般用於解析xml片斷htm
parse()函數支持如下source的解析
file-like對象(要確保它是字節模式)
包含read(byte_count)方法的file-like對象,該方法每次調用都會返回一個字節字符串(byte string)
文件名字符串
HTTP或FTP URL字符串對象
處理文件名和URL的速度要比處理file-like對象或文件要快blog