簡體   English   中英

Python XML'TypeError:必須為xml.etree.ElementTree.Element,而不是str'

[英]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])

當代碼嘗試將CS​​V源字符串用作父參數時,Python 3.5會產生以下錯誤:

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

導致錯誤的已知原因是,當預期將其作為元素或子元素時,父參數將作為字符串返回。

是否可以從CSV調用存儲的值,並使其引用Element或SubElement而不是字符串? 目的是允許代碼讀取CSV文件並將任何SubElement分配給CSV中列出的父級。

我無法確定,但看起來好像您在做:ElementTree.SubElement(str,str)

什么時候應該做:ElementTree.SubElement(Element,str)

看來您已經知道這一點。 那么,真正的問題是,僅知道父對象的標記字符串時,您將如何引用該父對象? 您可以使用特定的標記字符串在ElementTree中搜索Elements,但這通常不是一個好主意,因為XML允許多個類似元素的實例。

我建議您:

  • 尋找一種策略來存儲對父元素的引用

  • 查看是否存在使用XPath唯一標識父元素的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM