我的xml看起来像这样
我想以所有标签<langSet xml:lang="en">
为目标。如您所见,“xml”未列在根目录的“xmlns”属性中。我正在使用xml.etree.ElementTree
到parse
和getroot
来初始化下面root
的值
因此,此调用工作正常,但返回所有语言:
root.findall('.//langSet')
我需要这个调用,但它返回空列表:
root.findall('.//langSet[@{xml}:lang="en"]')
谢谢你的帮助
Tags:
xml
名称空间前缀是预定义的(不需要在XML文档中声明)。但是ElementTree库仍然需要显式映射:nsmap
然后可以在findall()
调用中使用:您还可以使用以下语法:
“xml”名称空间前缀在xml文档和XPath中都是预定义的。所以你可以简单的做
此外,XPath还有一个lang()函数,允许
这并不是做完全相同的事情:(a)它还考虑祖先元素上的
@xml:lang
属性,以及(b)它将不仅匹配xml:lang="en"
,而且匹配更具体的语言代码,例如xml:lang="en-GB"
顺便说一句,“uk”是乌克兰语的语言代码:我不知道你是不是这么想的
相关问题 更多 >
编程相关推荐