英文:
Get items from xml Python
问题
在Python中,您可以使用以下代码来从XML中获取"Items"标签中的元素并创建一个可迭代的列表:
import xml.etree.ElementTree as ET
# 假设您已经有了XML数据,可以将其存储在变量stringBase64中
# 这里假设stringBase64包含了您提供的XML数据
# 将XML字符串解析为Element对象
xml = ET.fromstring(stringBase64)
# 找到包含所需数据的CDATA部分
cdata = xml.find('.//detalle').text
# 解析CDATA部分中的XML数据
tixml = ET.fromstring(cdata)
# 初始化一个空的可迭代列表以存储元素
items_list = []
# 遍历"item"元素
for item in tixml.findall('.//item'):
nombre = item.find('.//nombre').text
valor = item.find('.//valor').text
iva_tax = item.find('.//data/tax[@name="iva"]').attrib['value']
# 将元素信息添加到列表
item_info = f"Item: {nombre}, value ${valor}, iva_tax: {iva_tax}"
items_list.append(item_info)
# 现在,items_list 包含了您所需的可迭代列表
以上代码将解析XML中的"Items"标签,提取每个项目的名称、价值和IVA税,然后将这些信息存储在一个可迭代的列表中。
英文:
I have an xml in python, need to obtain the elements of the "Items" tag in an iterable list.
I need get a iterable list from this XML, for example like it:
- Item 1: Bicycle, value $250, iva_tax: 50.30
- Item 2: Skateboard, value $120, iva_tax: 25.0
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
<info>Listado de items</info>
<detalle>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<tienda id="tiendaProd" version="1.1.0">
<items>
<item>
<nombre>Bicycle</nombre>
<valor>250</valor>
<data>
<tax name="iva" value="50.30"></tax>
</data>
</item>
<item>
<nombre>Skateboard</nombre>
<valor>120</valor>
<data>
<tax name="iva" value="25.0"></tax>
</data>
</item>
<item>
<nombre>Motorcycle</nombre>
<valor>900</valor>
<data>
<tax name="iva" value="120.50"></tax>
</data>
</item>
</items>
</tienda>]]>
</detalle>
</data>
I am working with
import xml.etree.ElementTree as ET
for example
import xml.etree.ElementTree as ET
xml = ET.fromstring(stringBase64)
ite = xml.find('.//detalle').text
tixml = ET.fromstring(ite)
答案1
得分: -1
你可以使用BeautifulSoup4(BS4)来完成这个任务。
from bs4 import BeautifulSoup
# 读取XML文件
with open("example.xml", "r") as f:
contents = f.readlines()
# 创建Soup对象
soup = BeautifulSoup(contents, 'xml')
# 查找所有的item标签
item_tags = soup.find_all("item") # 返回所有在<item>标签中的内容
# 在每个item中查找nombre和valor标签
results = {}
for item in item_tags:
num = item.find("nombre").text
val = item.find("valor").text
results[str(num)] = val
# 打印包含XML中键值对的字典
print(results)
英文:
You can use BeautifulSoup4 (BS4) to do this.
from bs4 import BeautifulSoup
#Read XML file
with open("example.xml", "r") as f:
contents = f.readlines()
#Create Soup object
soup = BeautifulSoup(contents, 'xml')
#find all the item tags
item_tags = soup.find_all("item") #returns everything in the <item> tags
#find the nombre and valor tags within each item
results = {}
for item in item_tags:
num = item.find("nombre").text
val = item.find("valor").text
results[str(num)] = val
#Prints dictionary with key value pairs from the xml
print(results)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论