解析文件和字符串

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

相關文章
相關標籤/搜索