解析文件和字符串

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

相关文章
相关标签/搜索