Python3解析XMl(文档格式或返回参数格式)

版本: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)

猜你喜欢

转载自blog.csdn.net/qq_33562122/article/details/131001975
今日推荐