如何使用dexm解析Python中的嵌套元素

2024-04-25 04:27:22 发布

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

我正在尝试使用dexml解析以下xml:

<ticketDetail>
        <ticketId>int</ticketId>
.....
      </ticketDetail>
      <participants>
        <ParticipantDetailExt>
          <participantId>int</participantId>
...
        </ParticipantDetailExt>
        <ParticipantDetailExt>
          <participantId>int</participantId>
...
        </ParticipantDetailExt>
      </participants>

我的模型如下:

^{pr2}$

但是,当所有未嵌套的元素都正确解析时,参与者并没有被解析并加载到对象结构中。如何使用dexml对这种类型的结构建模?在

下面是示例代码:

#!/usr/bin/env python3

import xml.etree.ElementTree as ET
import dexml
from dexml import fields

samplexml = """<ticketDetail>
    <ticketId>1</ticketId>
  <participants>
    <ParticipantDetailExt>
      <participantId>2</participantId>
    </ParticipantDetailExt>
    <ParticipantDetailExt>
      <participantId>3</participantId>
    </ParticipantDetailExt>
  </participants>
</ticketDetail>"""

class Participant(dexml.Model):
    class meta:
        tagname = "ParticipantDetailExt"

    participantId = fields.Integer(tagname='participantId')

class Ticket(dexml.Model):
    class meta:
        tagname = "ticketDetail"

    ticketId = fields.String(tagname='ticketId')
    participants = fields.List(Participant)


myTk = Ticket.parse(samplexml)
print(myTk.ticketId)
print(len(myTk.participants))

Output is:
1
0

Expected Output would be:
1
2

Tags: importfieldsxml结构classintparticipantstagname