python 迭代 xml 避免命名空间
python iterate xml avoiding namespace
我想用我的 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>
在我的PYTHON脚本下面:
import xml.etree.ElementTree as ET
root = ET.fromstring(xml_taken_from_web)
print(root.tag)
问题是打印的输出是:
{blablabla}rootTag
所以当我迭代它时,所有 tag_1、tag_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)
我想用我的 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>
在我的PYTHON脚本下面:
import xml.etree.ElementTree as ET
root = ET.fromstring(xml_taken_from_web)
print(root.tag)
问题是打印的输出是:
{blablabla}rootTag
所以当我迭代它时,所有 tag_1、tag_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)