You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python调用SOAP API提取乐高积木数据的技术咨询

处理乐高Brickset SOAP API返回的XML数据

嘿,我来帮你搞定这个SOAP返回的XML解析问题!Python里有几个实用的工具能轻松处理这类场景,我给你推荐两种方案,分别适合不同需求:

方案1:用Python内置的ElementTree(零额外依赖)

这个方案不用装任何第三方包,适合快速实现需求。重点要注意XML的命名空间——这是很多人踩坑的地方,你的返回XML根节点带了xmlns="https://brickset.com/api/",所有子元素都属于这个命名空间,直接找标签名会找不到内容。

import xml.etree.ElementTree as ET
import requests

# 先通过HTTP请求获取XML内容(这里用requests做示例,你可以替换成自己的请求逻辑)
response = requests.get("你的SOAP API请求地址")
xml_content = response.text

# 解析XML字符串
root = ET.fromstring(xml_content)

# 定义命名空间映射,给官方命名空间加个短前缀方便调用
ns = {'bs': 'https://brickset.com/api/'}

# 找到所有<sets>节点
all_sets = root.findall('.//bs:sets', ns)

# 遍历每个set,提取你需要的字段
for set_item in all_sets:
    set_id = set_item.find('bs:setID', ns).text
    set_number = set_item.find('bs:number', ns).text
    set_name = set_item.find('bs:name', ns).text
    variant = set_item.find('bs:numberVariant', ns).text
    
    print(f"乐高套装:{set_name} | 编号:{set_number} | ID:{set_id} | 版本:{variant}")

方案2:用lxml(更灵活,支持复杂XPath查询)

如果你的XML结构更复杂,或者需要更强大的查询能力,lxml会是更好的选择。先安装它:

pip install lxml

然后是代码示例:

from lxml import etree
import requests

response = requests.get("你的SOAP API请求地址")
xml_content = response.text

# 解析XML
root = etree.fromstring(xml_content)

# 注册命名空间,避免XPath查询时的麻烦
etree.register_namespace('bs', 'https://brickset.com/api/')

# 用XPath直接定位所有sets节点
all_sets = root.xpath('//bs:sets', namespaces={'bs': 'https://brickset.com/api/'})

# 提取字段,XPath可以直接获取文本内容
for set_item in all_sets:
    set_id = set_item.xpath('./bs:setID/text()', namespaces={'bs': 'https://brickset.com/api/'})[0]
    set_number = set_item.xpath('./bs:number/text()', namespaces={'bs': 'https://brickset.com/api/'})[0]
    set_name = set_item.xpath('./bs:name/text()', namespaces={'bs': 'https://brickset.com/api/'})[0]
    
    print(f"[{set_id}] {set_number} - {set_name}")

关键提醒

  • 一定要处理命名空间!直接写find('sets')或者xpath('//sets')会找不到任何元素,必须带上我们定义的前缀。
  • 如果你的SOAP请求是POST类型(需要发送XML格式的请求体),可以用requests.post,把SOAP信封作为data参数传入,返回的XML同样用上面的方法解析就行。

内容的提问来源于stack exchange,提问作者Nico Schuck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:39:05