Python XML 'TypeError: must be xml.etree.ElementTree.Element, not str'



我目前正在尝试从CSV文件构建XML文件。目前,我的代码将 CSV 文件读取为数据,并开始从存储在 CSV 中的数据创建 XML。

CSV 示例:

Element,XMLFile
SubElement,XMLName,XMLFile
SubElement,XMLDate,XMLName
SubElement,XMLInformation,XMLDate
SubElement,XMLTime,XMLName

预期输出:

<XMLFile>
    <XMLName>
        <XMLDate>
            <XMLInformation />
        </XMLDate>
        <XMLTime />
    </XMLName>
</XMLFile>

目前,我的代码尝试查看CSV以查看新子元素的父元素:

# Defines main element
# xmlElement = xml.Element(XMLFile)
xmlElement = xml.Element(csvData[rowNumber][columnNumber])
# Should Define desired parent (FAIL) and SubElement name (PASS)
# xmlSubElement = xml.SubElement(XMLFile, XMLName)
xmlSubElement = xml.SubElement(csvData[rowNumber][columnNumber + 2], csvData[rowNumber][columnNumber + 1])

当代码尝试使用 CSV 源字符串作为父参数时,Python 3.5 会生成以下错误:

TypeError: must be xml.etree.ElementTree.Element, not str

错误的已知原因是父参数作为字符串返回,而它应该是元素或子元素。

是否可以从CSV中调用存储的值并让它引用元素或子元素,而不是字符串?目标是允许代码读取 CSV 文件并将任何子元素分配给 CSV 中列出的父元素。

我不能确定,但看起来你正在做:ElementTree.SubElement(str, str)

当你应该做的时候:ElementTree.SubElement(Element, str)

你似乎也已经知道这一点。那么,真正的问题是,当您只知道父对象的标签字符串时,您将如何引用父对象?您可以使用该特定标记字符串在 ElementTree 中搜索元素,但这通常不是一个好主意,因为 XML 允许类似元素的多个实例。

我建议你要么:

  • 查找存储对父元素的引用的策略

  • 查看是否有办法使用 XPath 唯一标识父元素

最新更新