想请教一下像xml文件使用python构造时,这种多个fields,和field怎么实现

想请教一下像xml文件使用python构造时,这种多个fields,和field怎么实现

img


非常感谢各位帮忙,感谢,感谢

基于Monster 组和GPT的调写:
用Python中的ElementTree库来构造XML文件。以下是一个示例代码,用于创建您提供的XML结构:


import xml.etree.ElementTree as ET

# 创建register元素
register = ET.Element("register")

# 创建并添加子元素
name = ET.SubElement(register, "name")
name.text = "MCR"

displayName = ET.SubElement(register, "displayName")
displayName.text = "MCR"

description = ET.SubElement(register, "description")
description.text = "Module Control Register"

addressOffset = ET.SubElement(register, "addressOffset")
addressOffset.text = "0x0"

size = ET.SubElement(register, "size")
size.text = "0x20"

access = ET.SubElement(register, "access")
access.text = "read-write"

resetValue = ET.SubElement(register, "resetValue")
resetValue.text = "0x00000000"

fields = ET.SubElement(register, "fields")

# 创建并添加两个field子元素
field1 = ET.SubElement(fields, "field")
name1 = ET.SubElement(field1, "name")
name1.text = "SWRST"

description1 = ET.SubElement(field1, "description")
description1.text = "Software Reset"

bitOffset1 = ET.SubElement(field1, "bitOffset")
bitOffset1.text = "0"

bitWidth1 = ET.SubElement(field1, "bitWidth")
bitWidth1.text = "1"

field2 = ET.SubElement(fields, "field")
name2 = ET.SubElement(field2, "name")
name2.text = "reserved"

description2 = ET.SubElement(field2, "description")
description2.text = "reserved"

bitOffset2 = ET.SubElement(field2, "bitOffset")
bitOffset2.text = "1"

bitWidth2 = ET.SubElement(field2, "bitWidth")
bitWidth2.text = "31"

# 将根元素register转换为字符串并打印
xml_str = ET.tostring(register, encoding="unicode")
print(xml_str)

输出


<register>
  <name>MCR</name>
  <displayName>MCR</displayName>
  <description>Module Control Register</description>
  <addressOffset>0x0</addressOffset>
  <size>0x20</size>
  <access>read-write</access>
  <resetValue>0x00000000</resetValue>
  <fields>
    <field>
      <name>SWRST</name>
      <description>Software Reset</description>
      <bitOffset>0</bitOffset>
      <bitWidth>1</bitWidth>
    </field>
    <field>
      <name>reserved</name>
      <description>reserved</description>
      <bitOffset>1</bitOffset>
      <bitWidth>31</bitWidth>
    </field>
  </fields>
</register>