【发布时间】:2021-01-01 00:54:05
【问题描述】:
我正在努力将数据从一个 xml 导出到第二个 xml,但脚本没有抛出任何错误,但什么也没发生..
我现在不知道该怎么办..
XML 文件的链接在这里:http://shop.dinotoys.cz/content/files/feeds/My_Product_Feed.xml
import xml.etree.ElementTree as ET
tree = ET.parse('/home/martin/Plocha/My_Product_Feed.xml')
root = tree.getroot()
polozky = root[1]
data = ET.Element('hracky')
element1 = ET.SubElement(data, 'categories')
element2 = ET.SubElement(data, 'products')
s_elem1 = ET.SubElement(element1, 'category')
s_elem2 = ET.SubElement(element2, 'product')
category = "Dino"
s_elem1.text = category
for p in polozky.findall('Product'):
s_elem2 = ET.SubElement(element2, 'product')
img = p.find('MediumImage4').text
name = p.find('DefaultTitle').text
status = p.find('IsOrderable').text
if status == 'True':
status = "SKLADEM"
else:
status = "NENÍ SKLADEM"
ean = p.find('EAN').text
try:
description = p.find('Description_1029').text
except AttributeError:
description = ""
continue
try:
category = p.find('Item_Category_Code_Description').text
except AttributeError:
category = ""
continue
sku = p.find('Id').text
sku_full = "D" + sku
s_elem2_1 = ET.SubElement(s_elem2, 'name')
s_elem2_2 = ET.SubElement(s_elem2, 'sku')
s_elem2_3 = ET.SubElement(s_elem2, 'imgurl')
s_elem2_4 = ET.SubElement(s_elem2, 'status')
s_elem2_5 = ET.SubElement(s_elem2, 'ean')
s_elem2_6 = ET.SubElement(s_elem2, 'description')
s_elem2_7 = ET.SubElement(s_elem2, 'category')
s_elem2_1.text = name
s_elem2_2.text = sku_full
s_elem2_3.text = img
s_elem2_4.text = status
s_elem2_5.text = ean
s_elem2_6.text = description
s_elem2_7.text = category
xml_content = ET.tostring(data)
with open('dinoxfeed.xml', 'wb') as f:
f.write(xml_content)
f.close()
有人可以帮帮我吗?
【问题讨论】:
-
这无济于事;但只是一点点,在文件的末尾,你不需要
f.close()。 -
解释一下你得到的当前输出和预期的输出。
-
@balderman ... 预期输出是新的 xml 文件,其中包含从指定列中的第一个 xml 文件中提取的值。当前输出不是什么。没有文件,文件中没有输出。
-
@TryingMyBest 您是否在脚本中添加了几行
print以查看有什么问题? -
是的,我也尝试过,但仍然没有发生任何事情。我不明白这一点,因为我的其他脚本基于相同的代码,可以工作..
标签: python python-3.x xml xml-parsing xml.etree