如何用Python脚本将OrderCount嵌套在Orders和Item节点下生成XML
调整Python XML生成代码的方案
你的核心需求是把OrderCount节点嵌套到Orders下的Item节点中,同时要注意XML必须有唯一根节点(你给出的目标XML片段存在两个顶级元素,不符合XML规范,因此需要添加一个根容器来包裹它们)。以下是修改后的完整代码:
import xml.etree.cElementTree as ET # 创建根容器,用于包裹FileInfo和Orders两个同级节点 root = ET.Element("Root") # 创建FileInfo节点并添加子元素 file_info = ET.SubElement(root, "FileInfo") ET.SubElement(file_info, "FileFormatVersion").text = "1.0" ET.SubElement(file_info, "CustomerName").text = "GCS0223" ET.SubElement(file_info, "Source").text = "nA" # 创建Orders -> Item -> OrderCount的嵌套结构 orders = ET.SubElement(root, "Orders") item = ET.SubElement(orders, "Item") ET.SubElement(item, "OrderCount").text = "1" # 生成XML文件,指定XML声明和编码 tree = ET.ElementTree(root) tree.write(r'c:\AH_Output\IGW.xml', xml_declaration=True, encoding='UTF-8', method='xml')
生成的规范XML结构
<?xml version='1.0' encoding='UTF-8'?> <Root> <FileInfo> <FileFormatVersion>1.0</FileFormatVersion> <CustomerName>GCS0223</CustomerName> <Source>nA</Source> </FileInfo> <Orders> <Item> <OrderCount>1</OrderCount> </Item> </Orders> </Root>
关键调整说明
- 新增根容器节点:解决XML必须有唯一根的规范要求,避免生成无效XML文件。
- 层级拆分重构:将原来直接挂载在根节点下的
OrderCount,通过Orders→Item的层级嵌套实现你需要的结构。 - 写入参数优化:添加
xml_declaration=True和encoding='UTF-8'参数,确保生成的XML包含正确的版本和编码声明,与你目标结构一致。
内容的提问来源于stack exchange,提问作者Andrew Haworth
相关产品推荐
相关产品推荐

