python迭代xml避免命名空间
使用python脚本,我希望迭代xml文件,搜索特定的元素标记。 我有一些与根标记的名称空间相关的问题 在我的XML结构下面:python迭代xml避免命名空间,python,xml,xml-namespaces,Python,Xml,Xml Namespaces,使用python脚本,我希望迭代xml文件,搜索特定的元素标记。 我有一些与根标记的名称空间相关的问题 在我的XML结构下面: <?xml version="1.0" ?> <rootTag xmlns="blablabla"> <tag_1> <sub_tag_1>..something..</sub_tag_1> </tag_1> <tag_2> <
<?xml version="1.0" ?>
<rootTag xmlns="blablabla">
<tag_1>
<sub_tag_1>..something..</sub_tag_1>
</tag_1>
<tag_2>
<sub_tag_2>..something..</sub_tag_2>
</tag_2>
...and so on...
</rootTag>
问题是打印输出为:
{blabla}rootTag
因此,当我对它进行检查时,所有的标记_1、标记_2等标记都将具有{blablabla}字符串,因此我无法对标记进行任何检查
我试着用这种方式使用正则表达式
root = re.sub('^{.*?}', '', root.tag)
问题是后面的根是一个字符串类型,因此我无法将其转换为这样的元素类型
如何仅打印rootTag?使用以下选项:
import xml.etree.ElementTree as ET
from lxml import etree
root = ET.fromstring(xml_taken_from_web)
print(etree.QName(root.tag).localname)
这样,root将是一个字符串,因此无法在搜索嵌套标记时对其进行迭代。我得到错误AttributeError:模块'xml.etree'没有属性'QName'@xXJohnRamboXx已编辑请重新尝试运行新代码,但我得到以下输出错误:ValueError:无效标记名”“@xXJohnRamboXx奇怪请重试
import xml.etree.ElementTree as ET
from lxml import etree
root = ET.fromstring(xml_taken_from_web)
print(etree.QName(root.tag).localname)