
[英]TypeError: remove() argument must be xml.etree.ElementTree.Element, not str | python | xml.etree
[英]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調用存儲的值,並使其引用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.