想请教一下像xml文件使用python构造时,这种多个fields,和field怎么实现
非常感谢各位帮忙,感谢,感谢
想请教一下像xml文件使用python构造时,这种多个fields,和field怎么实现
基于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>