Closed shevernitskiy closed 9 months ago
I have these models:
class EnumItem(BaseXmlModel, tag="enum-item"): name: str = attr(name="name") value: int | None = attr(name="value", default=None) comment: str = attr(name="comment", default="") class EnumField(BaseXmlModel, tag="enum"): name: str = attr(name="name") type_name: str = attr(name="type-name", default="") base_type: str = attr(name="base-type", default="") items: list[EnumItem] = element(tag="enum-item") class String(BaseXmlModel): name: str = attr(name="name") class Integer(BaseXmlModel): name: str = attr(name="name") class Pointer(BaseXmlModel, tag="pointer"): name: str = attr(name="name") class Vector(BaseXmlModel): name: str = attr(name="name") type_name: str = attr(name="type-name", default="") pointer_type: str = attr(name="pointer-type", default="") class Struct(BaseXmlModel, tag="struct-type"): type_name: str = attr(name="type-name", default="") string: list[String] = element(tag="stl-string", default=[]) int32_t: list[Integer] = element(tag="int32_t", default=[]) int16_t: list[Integer] = element(tag="int16_t", default=[]) int8_t: list[Integer] = element(tag="int8_t", default=[]) enum: list[EnumField] = element(tag="enum", default=[]) vector: list[Vector] = element(tag="stl-vector", default=[]) pointer: list[Pointer] = element(tag="pointer", default=[])
And I'm trying to parse this xml
<struct-type type-name='conversation'> <stl-string name='conv_title'/> <enum base-type='int32_t' name='state'> <enum-item name='started'/> <enum-item name='active'/> <enum-item name='finished'/> <enum-item name='quit'/> </enum> <stl-vector type-name='int16_t' name='talk_choices' /> <int32_t name='unk_30' ref-target='unit'/> <int32_t name='unk_34' ref-target='historical_figure'/> <int32_t name='unk_38'/> <int32_t name='unk_3c' ref-target='unit'/> <int32_t name='unk_40' ref-target='historical_figure'/> <int32_t name='unk_44'/> <int32_t name='unk_48' ref-target='unit'/> <int32_t name='unk_4c' ref-target='historical_figure'/> <int32_t name='unk_50'/> <stl-vector name='unk_54' pointer-type='nemesis_record'/> <stl-vector name='unk_64' pointer-type='historical_entity'/> <int8_t name='unk_74'/> <int32_t name='unk_78'/> <int32_t name='unk_7c'/> <int16_t name='unk_80'/> <stl-vector name='unk_84'/> <stl-vector name='unk_94'/> <stl-vector name='unk_a4'/> <pointer name='location' type-name='building' comment='civzone'/> <int8_t name='unk_b8'/> <int32_t name='unk_bc'/> <stl-vector name='speech'> <pointer> <stl-vector name='text' pointer-type='stl-string' comment='wordwrap'/> <int32_t name='speaker' ref-target='unit'/> <int32_t name='unk_14'/> <int32_t name='unk_18'/> <int16_t name='fg'/> <int16_t name='bg'/> <int16_t name='bright'/> </pointer> </stl-vector> </struct-type>
And i have this result:
Struct( type_name='conversation', string=[String(name='conv_title')], int32_t=[], int16_t=[], int8_t=[], enum=[ EnumField( name='state', type_name='', base_type='int32_t', items=[ EnumItem(name='started', value=None, comment=''), EnumItem(name='active', value=None, comment=''), EnumItem(name='finished', value=None, comment=''), EnumItem(name='quit', value=None, comment='') ] ) ], vector=[Vector(name='talk_choices', type_name='int16_t', pointer_type='')], pointer=[] )
Somehow parsing stoped after first stl-vector tag. There is no errors.
stl-vector
Python 3.11
Ok, seems like i should use another search mode
I have these models:
And I'm trying to parse this xml
And i have this result:
Somehow parsing stoped after first
stl-vector
tag. There is no errors.Python 3.11