我想定位所有标签<langSet xml:lang="en">
。如您所见,根目录中的“ xmlns”属性中未列出“ xml”。我正在使用xml.etree.ElementTree
至parse
和getroot
初始化下面的root
的值。
因此,此调用工作正常,但返回所有语言:
root.findall('.//langSet')
并且此调用是我所需要的,但它返回空列表:
root.findall('.//langSet[@{xml}:lang="en"]')
谢谢您的帮助。
“ xml”名称空间前缀在XML文档和XPath中都是预定义的。所以你可以简单地做
.//langSet[@xml:lang='en']
此外,XPath具有允许的lang()函数
.//langSet[lang('en')]
这不会做完全相同的事情:(a)它也考虑祖先元素上的@xml:lang
属性,并且(b)它不仅会匹配xml:lang="en"
,而且还会匹配更具体的语言代码,例如[ C0]。
偶然地,“ uk”不是公认的语言代码,因此不应在xml:lang="en-GB"
属性中使用它。