SPSS 26起不再支持XML直接导入,需经XML→CSV→SPSS转换;推荐用Python或R解析XML并扁平化为规范CSV(UTF-8、无BOM、双引号包裹),再以语法GET DATA导入。

SPSS 不支持直接导入 XML 文件
SPSS 从 26 版开始彻底移除了原生 XML 导入功能(File → Read XML Data... 在早期版本中已标记为弃用)。你现在双击 XML 文件或在 File → Open → Data 里选中它,大概率会看到错误提示:XML parser error 或直接无响应。这不是你文件格式不对,是软件本身不处理。
必须先转成 SPSS 支持的中间格式
最可靠、兼容性最好的路径是:XML → CSV → SPSS。关键不是“怎么读 XML”,而是“怎么把结构化调查数据准确扁平化”。
- 如果 XML 是标准问卷导出(如 LimeSurvey、Qualtrics 的 XML),通常含
<response>块和嵌套<answer>,优先用 Python 的pandas.read_xml()(需 pandas ≥ 2.0)或xml.etree.ElementTree解析;R 用户可用xml2::read_xml()+tidyr::hoist() - 别依赖 Excel 打开再另存为 CSV:Excel 会自动合并重复列名、截断长文本、误判数字格式,导致后续
GET DATA时变量类型错乱 - 生成 CSV 时务必确保:首行为清晰字段名(SPSS 对空格/特殊字符敏感,建议用下划线)、无 BOM 头、编码为 UTF-8、字符串值用双引号包裹(尤其含逗号或换行)
用 SPSS 语法导入 CSV 更稳,别用图形界面
图形界面的 Text Import Wizard 在处理多级嵌套题项(如矩阵量表、带子问题的开放题)时容易错位,且不记录操作过程。直接写语法可控性强:
GET DATA
/TYPE=TXT
/FILE="C:datasurvey_clean.csv"
/ENCODING='UTF8'
/DELCASE=LINE
/DELIMITERS=","
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/DATATYPEMIN PERCENTAGE=95.0
/VARIABLES=
id AUTO
q1_1 AUTO
q1_2 AUTO
open_text AUTO.
EXECUTE.
-
/FIRSTCASE=2跳过标题行;若 CSV 无标题,改用/FIRSTCASE=1并手动定义VARIABLES -
AUTO让 SPSS 自判类型,但对开放题文本常误判为数值——遇到q4_text类变量,显式写成q4_text 60(60 表示宽度)更安全 - 路径中的反斜杠必须双写:
"C:\data\survey.csv",单斜杠或正斜杠在语法中会报错
XML 里常见结构陷阱:重复节点与缺失值
调查 XML 中最易出问题的是动态题组(如“请列出最多 3 个原因”生成 <reason1>、<reason2>…),解析时若没统一补全空节点,CSV 会出现列数不齐,SPSS 导入直接中断。
- Python 示例(用
lxml确保顺序):for resp in root.findall('response'):row = {f'reason{i}': resp.findtext(f'reason{i}') or '' for i in range(1, 4)} - SPSS 里空字符串默认不等于系统缺失值(
$null$),做FREQUENCIES时会单独计为一类——导入后立即运行RECODE reason1 TO reason3 ('' = SYSMIS). - 时间字段(如
<submit_time>2024-03-15T14:22:03Z</submit_time>)要先在 CSV 中转成YYYY-MM-DD HH:MM:SS格式,否则 SPSS 无法识别为日期型
真正卡住人的从来不是“怎么点菜单”,而是 XML 结构和 SPSS 数据模型之间的语义断层。花十分钟检查前三条记录的字段对齐,比反复重跑导入快得多。

















