我有一个地理数据文件
<gmd:MD_Metadata
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gco="http://www.isotc211.org/2005/gco" >
<gmd:fileIdentifier>
<gco:CharacterString>2ce585df-df23-45f6-b8e1-184e64e7e3b5</gco:CharacterString>
</gmd:fileIdentifier>
<gmd:language>
<gmd:LanguageCode codeList="https://www.loc.gov/standards/iso639-2/" codeListValue="ger">ger</gmd:LanguageCode>
</gmd:language>
</gmd:MD_Metadata>
利用 lxml.objectivy 我可以轻松解析它
from lxml import objectify
data = objectify.parse('rec.xml').getroot()
在数据中,“语言”公开为
(Pdb) data.language.LanguageCode
'ger'
但不是“文件标识符”
(Pdb) data.fileIdentifier.CharacterString
*** AttributeError: no such child: {http://www.isotc211.org/2005/gmd}CharacterString
显然,lxml 正在为“CharacterString”寻找错误的命名空间。
但是信息在那里
(Pdb) data.fileIdentifier['{http://www.isotc211.org/2005/gco}CharacterString']
'2ce585df-df23-45f6-b8e1-184e64e7e3b5'
如何说服 lxml 使用正确的命名空间?任何帮助表示赞赏
沃尔克