python cs中令人费解的XML不变性问题

2024-09-29 23:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个Python实用程序,它可以自动将带有TCG卡名称和规则的xml文件(想想聚集的魔力)转换为一组图像。该过程的一个主要部分是A)提取xml数据和B)输出一个带有“set”标记的新xml文件,该标记包含结果图像的url作为属性(这样您就可以在Cockatrice或类似程序中使用这些卡)。这些都是使用本机python csv库完成的

这是我的代码:我将在底部解释这个问题,因为不阅读它很难理解,我想

import csv

def entriestocards(xmlfile, cards):
    f = open(xmlfile)
    settag = ET.Element("set")
    tree = ET.parse(f)
    f.close()
    root = tree.getroot()
    for c in root:
        try:
            for element in c.find('set'): #remove set tags from xml for fresh start
                c.remove(element)
                print('found and removed set tag')
            card = Card(c.find('name').text,c.find('text').text)
            settag.set('picURL', card.image)
            settag.text = set_code
            c.insert(1, settag)
            print(settag.attrib) #this prints the correct image url in the command line
            print('inserted set tag')
            cards.append(card) 

        except AttributeError:
            print("card missing attributes")
            continue

    tree.write(xmlfile[:-4] + "-cardized.xml")
    return cards

我在命令行中打印settag.attrib,然后得到我想要的东西。每一张卡片都有自己的图像url作为settag属性——卡片的name上加了一个.png

问题是,当我查看实际输出文件时,所有的“set”标记在picURL属性中都具有相同的图像文件名。在我的例子中,它们都具有xml数据中最后一个条目的图像文件名。将上述代码中的card.image更改为"foo"。对settag的set调用会导致所有set标记都获得属性picURL = "foo"

到底发生了什么事?提前谢谢,很抱歉,问题不是很简单


Tags: 文件text标记图像treeurlfor属性

热门问题