如何从 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