Python写入XML文件时首行<符号报无效语法错误如何解决
报错原因
这个语法错误和IDLE版本、Python版本无关,核心原因是你将XML格式的代码直接写在了后缀为.py的Python源代码文件中,Python解释器仅能识别Python语法,无法解析XML的<开头的标签规则,因此抛出「invalid syntax」报错。
解决方法
方法1:直接创建独立XML文件
不需要通过Python代码生成的场景下,直接新建文件,将文件后缀修改为.xml(例如persons.xml),把你提供的XML代码完整粘贴到该文件中保存即可。生成的XML文件可以直接被SAX、DOM接口读取操作,符合学习要求。
方法2:通过Python代码写入XML文件
如果需要用Python动态生成XML文件,可选择以下两种实现方式:
方式A:字符串直接写入(适合固定XML内容的场景)
将XML内容包裹在Python的多行字符串中,再通过文件操作写入本地:
# 定义XML内容为多行字符串 xml_content = """<?xml version="1.0"?> <group> <person id="1"> <name>John Smith</name> <age>20</age> <weight>80</weight> <height>188</height> </person> <person id="2"> <name>Mike Davis</name> <age>45</age> <weight>82</weight> <height>185</height> </person> <person id="3"> <name>Anna Johnson</name> <age>33</age> <weight>67</weight> <height>167</height> </person> <person id="4"> <name>Bob Smith</name> <age>60</age> <weight>70</weight> <height>174</height> </person> <person id="5"> <name>Sarah Pitt</name> <age>12</age> <weight>50</weight> <height>152</height> </person> </group> """ # 写入本地XML文件 with open("persons.xml", "w", encoding="utf-8") as f: f.write(xml_content)
方式B:用内置xml模块生成(适合动态修改XML内容的场景)
使用Python自带的xml.dom.minidom模块生成标准XML,格式更规范,避免手写语法错误:
from xml.dom.minidom import Document # 初始化DOM文档对象 doc = Document() # 创建根节点 root = doc.createElement("group") doc.appendChild(root) # 定义人员数据,可按需动态修改 person_list = [ {"id": "1", "name": "John Smith", "age": "20", "weight": "80", "height": "188"}, {"id": "2", "name": "Mike Davis", "age": "45", "weight": "82", "height": "185"}, {"id": "3", "name": "Anna Johnson", "age": "33", "weight": "67", "height": "167"}, {"id": "4", "name": "Bob Smith", "age": "60", "weight": "70", "height": "174"}, {"id": "5", "name": "Sarah Pitt", "age": "12", "weight": "50", "height": "152"} ] # 循环生成节点 for info in person_list: person_node = doc.createElement("person") person_node.setAttribute("id", info["id"]) root.appendChild(person_node) # 生成子属性节点 for key in ["name", "age", "weight", "height"]: node = doc.createElement(key) text = doc.createTextNode(info[key]) node.appendChild(text) person_node.appendChild(node) # 写入本地文件 with open("persons.xml", "w", encoding="utf-8") as f: doc.writexml(f, indent='', addindent='\t', newl='\n', encoding="utf-8")
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

