样参
<?xml version="1.0" encoding="UTF-8"?>
-<root>
<state>success</state>
<result>接口调用成功</result>
<queryCode>ff808081864f14af0</queryCode>
-<head>
-<jbxx>
<column length="200" type="S" nodeName="csmc">测试名称</column>
<column length="18" type="S" nodeName="cscsdm">测试参数代码</column>
<column length="20" type="S" nodeName="cscs">测试测试</column>
<column length="11" type="S" nodeName="cssj">测试数据</column>
</jbxx>
-<sxcjdx>
<column length="32" type="S" nodeName="id">内码</column>
<column length="50" type="S" nodeName="mdlb">名单类别</column>
<column length="4000" type="S" nodeName="lryy">列入原因</column>
<column length="20" type="D" nodeName="qssj">起始时间</column>
<column length="20" type="D" nodeName="yxqz">有效期至</column>
</sxcjdx>
</head>
-<datas>
-<jbxx>
<csmc>**********</csmc>
<cscsdm/>
<cscs/>
<cssj/>
</jbxx>
-<sxcjdx>
-<data>
<id>7087f2822b82556</id>
<mdlb>*****</mdlb>
<lryy>*****</lryy>
<qssj/>
<yxqz/>
</data>
-<data>
<id>7087f2822b82556</id>
<mdlb>*****</mdlb>
<lryy>*****</lryy>
<qssj/>
<yxqz/>
</data>
-<data>
<id>7087f2822b82556</id>
<mdlb>*****</mdlb>
<lryy>*****</lryy>
<qssj/>
<yxqz/>
</data>
</sxcjdx>
</datas>
</root>

代码
import pandas as pd
import requests
import xml.etree.ElementTree as ET
def request_data_xml(param, url):
params = param
result = requests.get(url, params=params)
return result.json()
def get_xml(self, param, url):
result = self.request_data(url=url, param=param)
result = json.loads(json.loads(result["data"])["data"])
result_xml = str(result["result"].replace("\"", "").replace("<?xml version='1.0' encoding='UTF-8'?>", ""))
tree = ET.fromstring(result_xml)
return tree
tree= get_xml(param, url)
通过findall,find寻找我们需要的标签获取数据
csmc= tree.findall('datas')[0].find('jbxx').find("csmc").text
cscsdm = tree.findall('datas')[0].find('jbxx').find("cscsdm").text
cscs = tree.findall('datas')[0].find('jbxx').find("cscs").text
cssj= tree.findall('datas')[0].find('jbxx').find("cssj").text
lis = []
for obj in tree.find('datas').find('sxjldx').findall("data"):
lis1 = []
id = obj.find("id").text
mdlb = obj.find("mdlb").text
lryy = obj.find("lryy").text
qssj = obj.find("qssj").text
yxqz = obj.find("yxqz").text
dis = {"id": id, "mdlb": mdlb, "lryy": lryy, "qssj": qssj, "yxqz": yxqz}
lis.append(dis)
df_temp = pd.DataFrame(lis, index=None)
df_temp['csmc'], df_temp['cscsdm'], df_temp['cscs'], df_temp['cssj'] = csmc, cscsdm, cscs, cssj
读取xml
方式一,从文件中读取
xml_path= '../project/xxxx.xml'
tree = ET.parse(xml_path)
方式二,从字符串中读取
xml='<?xml version="1.0" encoding="UTF-8"?>-<root>...</root>'
tree = ET.fromstring(result_xml)