使用 xml.etree.ElementTree 解析 XML 时获取空列表作为属性

Kir*_*ill 6 python xml python-3.x cyrillic

所以我使用 python 3 来解析 XML。

text = '''
<body>
       <list>
         <item>
            <cmid>16934673</cmid>
            <day>29.02.2016</day>
            <relay>1</relay>
            <num>1</num>
            <starttime>08:15</starttime>
            <endtime>08:55</endtime>
            <subjid>81327</subjid>
            <subjname>???????????? ??????</subjname>
            <subjabbr>???.??.</subjabbr>
            <sgid>447683</sgid>
            <sgname>???????????? ??????</sgname>
            <tid>551817</tid>
            <tlastname>???????</tlastname>
            <tfirstname>???</tfirstname>
            <tmidname>????????</tmidname>
            <roomid>68672</roomid>
            <roomname>?????? 1 ???????</roomname>
        </item>
      </list>
    </body>'''
Run Code Online (Sandbox Code Playgroud)

我尝试subjname使用xml.etree.ElementTree这种方式获取。

>>> import xml.etree.ElementTree  as ET
>>> doc = ET.fromstring(text)
>>> print(doc[0][0][7].tag)
subjname
>>> print(doc[0][0][7].attrib)
{}
Run Code Online (Sandbox Code Playgroud)

所以我总是得到一个空的字典。但我找不到问题所在。我以为问题是属性是西里尔文的,但是当我尝试获取cmid属性时出现同样的问题

>>> doc = ET.fromstring(r.text.encode('utf-8'))
>>> print(doc[0][0][0].attrib)
{}
Run Code Online (Sandbox Code Playgroud)

ale*_*cxe 5

.attrib在您的情况下是一个空字典,因为您显示的标签根本没有任何属性。你可能想得到.text

doc.find("subjname").text
Run Code Online (Sandbox Code Playgroud)