亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python XML: 'TypeError: SubElement() argument 1

Python XML: 'TypeError: SubElement() argument 1

LEATH 2022-08-16 18:49:49
我有一個來自xml另一部分的子元素列表,我試圖插入,如下所示:import xml.etree.ElementTree as etimport xmldefs_element = xml.etree.ElementTree.Element('ns0:defs')for pc_def in pc_defs_list:    et.SubElement(defs_element, 'path', pc_def.attrib)但是當我嘗試時,我得到這個錯誤:TypeError: SubElement() argument 1 must be xml.etree.ElementTree.Element, not Element其他方法會產生類似的錯誤。如何獲取此非元素的元素?must be an Element, not Element
查看完整描述

2 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

有兩個可能的問題:


如果刪除命名空間前綴,問題是否會消失?在 ElementTree 中創建命名空間元素并不像只用前綴作為前綴那么簡單。請參閱在 Python 中使用 ElementTree 發出命名空間規范中的主要答案,以顯示命名空間的工作原理:ns0:

et.register_namespace('ns0',"http://ns0.namespaces.org")

defs_element = xml.etree.ElementTree.Element('{http://ns0.namespaces.org}:defs')

你沒有解釋從哪里來。它是否可能加載到另一個文件中?ElementTree在其C版本中對正在傳入的確切類非常挑剔。因此,如果元素來自加載Python版本的ElementTree的文件,則無法將它們插入到ElementTree中。即使它們都加載了 ElementTree 的 C 版本(Python 3.3 之前的 cElementTree),如果它們不是從同一個二進制文件加載的(例如,一個在虛擬環境內部,一個在外部),那么會出現此消息(以前是更隱晦的消息)。這里的情況似乎不太可能,因為您正在創建新的子元素,而不是直接追加現有元素。pc_defs_listargument 1 must be Element, not Element

曾經在Django環境中,我甚至遇到了以下問題:


import xml.etree.ElementTree as ET

from xml.etree.ElementTree import Element


root = Element('root')

hi = ET.Element('hi')

root.append(hi)

抱怨它們是不兼容的對象


查看完整回答
反對 回復 2022-08-16
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

像這樣的東西的工作原理:


defs_xml_str = '<defs>'

for path_str in path_strs_list:

    defs_xml_str += path_str

defs_xml_str += '</defs>'

legend_1_xml.insert(0, et.fromstring(defs_xml_str))


查看完整回答
反對 回復 2022-08-16
  • 2 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號