版本:python3.11
一、读取XML文档
方法一 ElementTree.parse()
ElementTree.parse()方法接受一个文件名或文件对象作为参数,从中读取XML数据并生成相应的ElementTree对象。
在这种情况下,它使用之前指定的文件路径doc作为参数,打开'./apple.xml'文件并解析其中的XML内容。解析后的结果是一个ElementTree对象,表示整个XML文档的树形结构。通过该对象,您可以访问和操作XML文档中的元素和数据。
适用性:文本XML处理。
代码中获取文本路径的方式不展开描述,其中一个方法可以参考我的这篇博客python 获取项目绝对路径 以及利用项目根目录路径拼接获取yaml文件内容_python 项目根目录
from xml.etree import ElementTree
# doc是一个xml文本路径,比如doc= './apple.xml'
def document_xml(doc):
return ElementTree.parse(doc)
方法二 xml.dom.minidom.parse()
dom = xml.dom.minidom.parse(doc):这一行使用xml.dom.minidom.parse()函数解析XML文件,并将结果存储在变量dom中。xml.dom.minidom.parse()接受一个文件名或文件对象作为参数,从中读取XML数据并生成相应的Document对象。
在这种情况下,它使用之前指定的文件路径doc作为参数,打开'./data.xml'文件并解析其中的XML内容。解析后的结果是一个Document对象,表示整个XML文档的树形结构。通过该对象,您可以访问和操作XML文档中的元素和数据。
适用性:文本XML处理。
import xml.dom.minidom
# doc是一个xml文本路径,比如doc= './apple.xml'
def minidom_xml(doc):
return xml.dom.minidom.parse(doc)
二、读取返回值
方法一 ElementTree.XML()
ElementTree.XML(xml_string)该方法可以将给定的XML字符串转换为Element对象,并返回根元素。与ElementTree.fromstring()方法不同的是,ElementTree.XML()方法还支持传递解析器选项参数。您可以使用此方法来解析包含命名空间、DTD验证等复杂结构的XML字符串。
适用性:字符串格式的复杂XML处理。
from xml.etree import ElementTree as ET
xml_string = '<?xml version="1.0" encoding="UTF-8"?><root><Code>apple</Code></root>'
def xml_xml(xml_string):
return ET.XML(xml_string)
注:代码中的xml3是为了方便演示,可以替换为返回参数来解析
原文链接:https://blog.csdn.net/qq_33562122/article/details/131001975,作者:秋不溜啾。转载请声明来源和作者。
方法二 ElementTree.fromstring(xml_string)
ElementTree.fromstring(xml_string):该方法是ElementTree.XML()的简化版本,它将给定的XML字符串转换为Element对象并返回根元素。这是最常用的方法,适用于大多数简单的XML结构。
适用性:字符串格式的简单XML处理。
from xml.etree import ElementTree as ET
xml_string = '<root><Code>apple</Code></root>'
def fromstring_xml(xml_string):
return ET.fromstring(xml_string)
方法三 直接字符串方法处理
直接用字符串方法读取XML,按照字符串的方式进行读取,比如re.findall(),split()等进行处理。文本处理属于泛用型方法,不属于xml的专用操作方法,而且比较麻烦,此处不展开讲解。
适应性:适用于格式不规范的XML处理。
三、Demo
以下是使用ElementTree.XML()解析返回参数的简单示例
from xml.etree import ElementTree as ET
def xml_xml(xml_string):
code_text = ""
code_element = dom.find('Code')
if code_element is not None:
code_text = code_element.text
print(code_text)
return code_text
if __name__ == '__main__':
url = "http://www.xxx.com/blog"
data = "{'author':'张三'}"
resp = requests.post(url=url,data=data)
dom = xml_xml(resp.text)