标签:element action 解析xml ESS 文件 pytho 元素 ror encoding
解析 xml 格式的文件有多种方法, 这里只介绍使用 xml.etree.ElementTree 这种解析方式.
ElementTree在 Python 标准库中有两种实现。一种是纯 Python 实现例如 xml.etree.ElementTree ,另外一种是速度快一点的 xml.etree.cElementTree 。你要记住: 尽量使用 C 语言实现的那种,因为它速度更快,而且消耗的内存更少。
注意: 开发的时候为了调试方便, 可以使用 ElementTree .
try: import xml.etree.cElementTree as et except ImportError: import xml.etree.ElementTree as et
# 从某文件解析成 xml 对象: tree_obj = et.parse( "city_info.xml" ) # 获取根节点元素 root = tree_obj.getroot()
# 注意: xml 格式开头的 <?xml version...... 一定不能有空格, 否则报错!!! xml_text = """<?xml version="1.0" encoding="UTF-8"?> <struts> <action name="login" class="com.coderising.litestruts.LoginAction"> <result name="success">homepage.jsp</result> <result name="fail">showLogin.jsp</result> </action> <action name="logout" class="com.coderising.litestruts.LogoutAction"> <result name="success">welcome.jsp</result> <result name="error">error.jsp</result> </action> </struts> """ # 获取很节点元素 root = et.fromstring(xml_text)
# xml_text, 即上面的xml字符串 root = et.fromstring(xml_text) for action in root.iter("action"): act_name = action.attrib.get("name") # 获取属性值 class_info = action.get("class") # 同样也是获取标签属性值, 上面的简写方式 for result in action.iter("result"): res_name = result.get("name") res_text = result.text # 获取标签文本信息
find(): 查找满足条件的第一个标签
findall(): 查找满足条件的所有标签
root = et.fromstring(xml_text) # find() 查找第一个标签 action = root.find(".//action/result[2]") print(action.get("name")) # fail print(action.text) # result 1.2 result 1.2 result 1.2 result 1.2 # findall() 查找所有标签 actions = root.findall(".//action/result") for action in actions: ac_name = action.get("name") ac_text = action.text
标签:element action 解析xml ESS 文件 pytho 元素 ror encoding
原文地址:https://www.cnblogs.com/bk9527/p/11437539.html