Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python迭代xml避免命名空间_Python_Xml_Xml Namespaces - Fatal编程技术网

python迭代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> <

使用python脚本,我希望迭代xml文件,搜索特定的元素标记。 我有一些与根标记的名称空间相关的问题

在我的XML结构下面:

<?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)