如何从 xml 导入结构错误的 python 中的所有图像
How import all images from xml in python with a bad structure
我是 Python 的新手,无法从 xml 文件导入照片。不幸的是,我知道 xml 文件是歪曲的并且制作不当。但不幸的是,这种格式会传到服务器,无法更改。
XML结构:
<?xml version="1.0" encoding="utf-8" ?>
<test>
<test-item>
<sku>098730</sku>
<name><![CDATA[Bala bla bla]]></name>
<description><![CDATA[Bala bla bla. Bala bla bla. Bala bla bla.]]>
</description>
<image><![CDATA[image url]]></image>
<image2><![CDATA[image url]]></image2>
<image3><![CDATA[image url]]></image3>
<image4><![CDATA[image url]]></image4>
</test-item>
</test>
如何从此文件中正确导入结构错误的图像(<image>
、<image2>
、...等)?
试试下面的方法
import xml.etree.ElementTree as ET
xml = '''<?xml version="1.0" encoding="utf-8" ?>
<test>
<test-item>
<sku>098730</sku>
<name><![CDATA[Bala bla bla]]></name>
<description><![CDATA[Bala bla bla. Bala bla bla. Bala bla bla.]]>
</description>
<image><![CDATA[image url1]]></image>
<image2><![CDATA[image url2]]></image2>
<image3><![CDATA[image url43]]></image3>
<image4><![CDATA[image url4]]></image4>
</test-item>
</test>'''
root = ET.fromstring(xml)
images = []
counter = 0
while True:
if counter == 0:
img = root.find('.//image')
if img is None:
break
images.append(img.text)
counter =+ 2
else:
img = root.find('.//image{}'.format(counter))
if img is None:
break
images.append(img.text)
counter += 1
for idx,image in enumerate(images,1):
print('{}) {}'.format(idx,image))
输出
1) image url1
2) image url2
3) image url43
4) image url4
我是 Python 的新手,无法从 xml 文件导入照片。不幸的是,我知道 xml 文件是歪曲的并且制作不当。但不幸的是,这种格式会传到服务器,无法更改。
XML结构:
<?xml version="1.0" encoding="utf-8" ?>
<test>
<test-item>
<sku>098730</sku>
<name><![CDATA[Bala bla bla]]></name>
<description><![CDATA[Bala bla bla. Bala bla bla. Bala bla bla.]]>
</description>
<image><![CDATA[image url]]></image>
<image2><![CDATA[image url]]></image2>
<image3><![CDATA[image url]]></image3>
<image4><![CDATA[image url]]></image4>
</test-item>
</test>
如何从此文件中正确导入结构错误的图像(<image>
、<image2>
、...等)?
试试下面的方法
import xml.etree.ElementTree as ET
xml = '''<?xml version="1.0" encoding="utf-8" ?>
<test>
<test-item>
<sku>098730</sku>
<name><![CDATA[Bala bla bla]]></name>
<description><![CDATA[Bala bla bla. Bala bla bla. Bala bla bla.]]>
</description>
<image><![CDATA[image url1]]></image>
<image2><![CDATA[image url2]]></image2>
<image3><![CDATA[image url43]]></image3>
<image4><![CDATA[image url4]]></image4>
</test-item>
</test>'''
root = ET.fromstring(xml)
images = []
counter = 0
while True:
if counter == 0:
img = root.find('.//image')
if img is None:
break
images.append(img.text)
counter =+ 2
else:
img = root.find('.//image{}'.format(counter))
if img is None:
break
images.append(img.text)
counter += 1
for idx,image in enumerate(images,1):
print('{}) {}'.format(idx,image))
输出
1) image url1
2) image url2
3) image url43
4) image url4