Python xml.etree.ElementTree 问题,Element.tag 让我得到的不仅仅是标签名称
Python xml.etree.ElementTree issue, Element.tag is getting me more than just the tag name
我在做一些像从 XML 文件中获取元素标签这样简单的事情时遇到了很多麻烦。这是删除了敏感信息的元素:
<FIXML xmlns="AAA/AAAAA-5-0-AAA" v="AAA.5.AAAA" xv="111" cv="AAA" s="2013-10-14">
我试图用这行简单的代码获取这个元素的标签:
tag1 = root.tag
并且出于某种原因,这没有按预期运行。它给了我这个值:
{AAA/AAAAA-5-0-AAA}FIXML
它把第一个属性的值附加到它上面,作为花括号中的前缀?它究竟为什么要这样做?我只想要它 return FIXML 而不是别的,根据文档 here 这是我理解它要做的。有什么想法吗?
Python版本:3.7
用户 mzjn 在这里是正确的,我没有意识到命名空间也被返回了。我解决这个问题的方法是去掉命名空间:
# Strip namespace off of root tag
if '}' in tag:
tag = tag.split('}', 1)[1]
这通过去除结束标记后的所有内容产生了预期的输出。显然,这假设标签或命名空间本身没有 } 字符。
我在做一些像从 XML 文件中获取元素标签这样简单的事情时遇到了很多麻烦。这是删除了敏感信息的元素:
<FIXML xmlns="AAA/AAAAA-5-0-AAA" v="AAA.5.AAAA" xv="111" cv="AAA" s="2013-10-14">
我试图用这行简单的代码获取这个元素的标签:
tag1 = root.tag
并且出于某种原因,这没有按预期运行。它给了我这个值:
{AAA/AAAAA-5-0-AAA}FIXML
它把第一个属性的值附加到它上面,作为花括号中的前缀?它究竟为什么要这样做?我只想要它 return FIXML 而不是别的,根据文档 here 这是我理解它要做的。有什么想法吗?
Python版本:3.7
用户 mzjn 在这里是正确的,我没有意识到命名空间也被返回了。我解决这个问题的方法是去掉命名空间:
# Strip namespace off of root tag
if '}' in tag:
tag = tag.split('}', 1)[1]
这通过去除结束标记后的所有内容产生了预期的输出。显然,这假设标签或命名空间本身没有 } 字符。