0
を使用してPythonでネストした要素を解析する方法: は、私がdexmlを使用して、次のXMLを解析しようとしていますdexml
<ticketDetail>
<ticketId>int</ticketId>
.....
</ticketDetail>
<participants>
<ParticipantDetailExt>
<participantId>int</participantId>
...
</ParticipantDetailExt>
<ParticipantDetailExt>
<participantId>int</participantId>
...
</ParticipantDetailExt>
</participants>
マイモデル
次のとおりです。# Participant Class
class Participant(dexml.Model):
class meta:
tagname = "ParticipantDetailExt"
participantId = fields.Integer(tagname='participantId')
...
# Ticket Class
class Ticket(dexml.Model):
class meta:
namespace = "Namespace Here"
tagname = "ticketDetail"
ticketId = fields.String(tagname='ticketId')
...
participants = fields.List(Participant)
をしかし、しばらくしているすべての要素ネストされたパースが正しく行われていないと、参加者は解析されずにオブジェクト構造にロードされます。どのようにdexmlを使ってこのタイプの構造をモデル化できますか?ここで
はサンプルコードです:
participants = fields.List(Participant, tagname="participants")
サンプルプログラム:tagname
あなたList()
に追加
#!/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
を短く、**完全なを提供してください**エラーを示すプログラム。プログラムを実行するために必要なすべてのデータを含めてください。あなたの質問にあなたのプログラムをコピーして、期待どおりの出力と実際の出力を貼り付けてください。詳細は、[mcve]を参照してください。 –
' ticketDetail>'はXMLの* end *に表示されませんか? –
ロブ、私はそれを無視してコピーしますか? – moderndba