You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:45:05