使用名称空间获取lxml标记属性

2024-04-28 13:58:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的XML看起来像:

...
<termEntry id="c1">
    <langSet xml:lang="de">
    ...

我有密码:

from lxml import etree
...

for term_entry in root.iterfind('.//termEntry'):
    print term_entry.attrib['id']
    print term_entry.nsmap

    for lang_set in term_entry.iterfind('langSet'):
        print lang_set.nsmap
        print lang_set.attrib

        for some_stuff in lang_set.iterfind('some_stuff'):
            ...

我得到空的nsmap dict,我的attrib dict看起来像{'{http://www.w3.org/XML/1998/namespace}lang': 'en'}

文件在命名空间中不能包含xml:,或者它可能具有不同的命名空间。如何知道标记声明中使用的命名空间?实际上,我只需要得到一个lang属性,我不在乎使用了什么名称空间。我不想使用任何垃圾,比如lang_set.attrib.values()[0]或其他具有已知名称的字段的查找。


Tags: inidlangfor空间xml命名print