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无法解析。按以下步骤修复:
清理文件开头非法字符
用Notepad++打开loginupdate.jmx,检查第一行开头是否有#或其他非XML声明的字符。正常JMeter JMX文件开头应为:<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="5.0" jmeter="5.5">若有多余字符,直接删除后保存。
调整文件编码
在Notepad++中依次点击「编码」→「转为UTF-8无BOM编码格式」,再保存文件。BOM头也可能导致XML解析失败。恢复备份文件
检查是否存在JMeter自动生成的备份文件(通常为loginupdate.jmx~),将其重命名为.jmx后尝试打开。重新录制脚本
若文件彻底损坏无法修复,只能重新录制脚本,录制完成后及时备份,避免后续操作损坏文件。
内容的提问来源于stack exchange,提问作者Sami88
相关产品推荐
相关产品推荐

