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

JMeter无法打开.jmx文件:XML格式错误求助

JMeter打开录制的loginupdate.jmx文件时触发XML解析错误

我在JMeter中录制了脚本并成功执行,但再次打开同一份loginupdate.jmx文件进行修改时触发错误。

核心报错信息

org.xml.sax.SAXParseException: Content is not allowed in prolog.
org.xmlpull.v1.XmlPullParserException: only whitespace content allowed before start tag and not # (position: START_DOCUMENT seen #... @1:2)

完整日志信息

2023-08-15 13:33:53,316 INFO o.j.r.JARSourceHTTP: Found cached repo
2023-08-15 13:33:53,452 INFO o.j.r.PluginManager: Plugins Status: [jpgc-casutg=2.10, jpgc-ffw=2.0, jpgc-plugins-manager=1.10, jmeter-core=5.5, jmeter-ftp=5.5, jmeter-http=5.5, jmeter-jdbc=5.5, jmeter-jms=5.5, jmeter-junit=5.5, jmeter-java=5.5, jmeter-ldap=5.5, jmeter-mail=5.5, jmeter-mongodb=5.5, jmeter-native=5.5, jmeter-tcp=5.5, jmeter-components=5.5]
2023-08-15 14:12:57,126 INFO o.a.j.s.FileServer: Default base='E:\apache-jmeter-5.5\bin'
2023-08-15 14:13:05,539 INFO o.a.j.g.a.Load: Loading file: E:\apache-jmeter-5.5\bin\loginupdate.jmx
2023-08-15 14:13:05,539 INFO o.a.j.s.FileServer: Set new base='E:\apache-jmeter-5.5\bin'
2023-08-15 14:13:05,647 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
2023-08-15 14:13:05,653 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
2023-08-15 14:13:05,655 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
2023-08-15 14:13:05,656 INFO o.a.j.s.SaveService: Loading file: E:\apache-jmeter-5.5\bin\loginupdate.jmx
2023-08-15 14:13:05,660 WARN o.j.r.p.TestPlanAnalyzer: Cannot parse file: E:\apache-jmeter-5.5\bin\loginupdate.jmx
org.xml.sax.SAXParseException: Content is not allowed in prolog.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) ~[xercesImpl-2.12.2.jar:?]
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) ~[xercesImpl-2.12.2.jar:?]
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122) ~[?:?]
at org.jmeterplugins.repository.plugins.TestPlanAnalyzer.getNodeListWithClassNames(TestPlanAnalyzer.java:130) ~[jmeter-plugins-manager-1.10.jar:?]
at org.jmeterplugins.repository.plugins.TestPlanAnalyzer.analyze(TestPlanAnalyzer.java:37) ~[jmeter-plugins-manager-1.10.jar:?]
at org.jmeterplugins.repository.plugins.PluginSuggester.analyzeTestPlan(PluginSuggester.java:51) ~[jmeter-plugins-manager-1.10.jar:?]
at org.jmeterplugins.repository.plugins.PluginSuggester.findPluginsToInstall(PluginSuggester.java:44) ~[jmeter-plugins-manager-1.10.jar:?]
at org.jmeterplugins.repository.plugins.PluginSuggester.checkAndSuggest(PluginSuggester.java:28) ~[jmeter-plugins-manager-1.10.jar:?]
at org.jmeterplugins.repository.logging.LoggerAppender.append(LoggerAppender.java:33) ~[jmeter-plugins-manager-1.10.jar:?]
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:675) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:633) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:616) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:552) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.core.Logger.log(Logger.java:161) ~[log4j-core-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205) ~[log4j-api-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159) ~[log4j-api-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142) ~[log4j-api-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2034) ~[log4j-api-2.17.2.jar:2.17.2]
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1899) ~[log4j-api-2.17.2.jar:2.17.2]
at org.apache.logging.slf4j.Log4jLogger.info(Log4jLogger.java:184) ~[log4j-slf4j-impl-2.17.2.jar:2.17.2]
at org.apache.jmeter.save.SaveService.loadTree(SaveService.java:425) ~[ApacheJMeter_core.jar:5.5]
at org.apache.jmeter.gui.action.Load.loadProjectFile(Load.java:129) ~[ApacheJMeter_core.jar:5.5]
at org.apache.jmeter.gui.action.Load.loadProjectFile(Load.java:101) ~[ApacheJMeter_core.jar:5.5]
at org.apache.jmeter.gui.action.Load.doActionAfterCheck(Load.java:88) ~[ApacheJMeter_core.jar:5.5]
at org.apache.jmeter.gui.action.AbstractActionWithNoRunningTest.doAction(AbstractActionWithNoRunningTest.java:44) ~[ApacheJMeter_core.jar:5.5]
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:87) ~[ApacheJMeter_core.jar:5.5]
at org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:69) ~[ApacheJMeter_core.jar:5.5]
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:722) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:716) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:741) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?]
2023-08-15 14:13:05,673 WARN o.a.j.g.a.Load: Error in XML format. org.xmlpull.v1.XmlPullParserException: only whitespace content allowed before start tag and not # (position: START_DOCUMENT seen #... @1:2)
2023-08-15 14:13:05,673 ERROR o.a.j.u.JMeterUtils: only whitespace content allowed before start tag and not # (position: START_DOCUMENT seen #... @1:2)

已尝试的解决方法

  • 更新JAVA版本
  • 查看jmeter.log日志
  • 使用Notepad++编辑.jmx文件

解决方案

从日志判断,问题根源是loginupdate.jmx文件的XML格式损坏,文件开头存在非法字符(#),导致JMeter无法解析。按以下步骤修复:

  1. 清理文件开头非法字符
    用Notepad++打开loginupdate.jmx,检查第一行开头是否有#或其他非XML声明的字符。正常JMeter JMX文件开头应为:

    <?xml version="1.0" encoding="UTF-8"?>
    <jmeterTestPlan version="1.2" properties="5.0" jmeter="5.5">
    

    若有多余字符,直接删除后保存。

  2. 调整文件编码
    在Notepad++中依次点击「编码」→「转为UTF-8无BOM编码格式」,再保存文件。BOM头也可能导致XML解析失败。

  3. 恢复备份文件
    检查是否存在JMeter自动生成的备份文件(通常为loginupdate.jmx~),将其重命名为.jmx后尝试打开。

  4. 重新录制脚本
    若文件彻底损坏无法修复,只能重新录制脚本,录制完成后及时备份,避免后续操作损坏文件。

内容的提问来源于stack exchange,提问作者Sami88

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:39:57