Dygraphs绘图出现XML解析错误:.dat改.csv后消失是否正常?
问题解答:Dygraphs加载.dat文件时Firefox报XML解析错误
问题场景
你在使用Dygraphs创建自定义绘图时遇到了这样一个现象:
- 加载
testdata.dat文件时,Firefox的Web Console抛出错误:XML Parsing Error: not well-formed,定位在文件第1行第5列 - 虽然页面功能不受影响,但把文件重命名为
testdata.csv并修改HTML中的引用路径后,错误直接消失了 - 你想确认这是否属于预期现象
代码与数据示例
HTML代码(dygraphs_test.html)
<!doctype html> <html> <head> <meta charset="utf-8"/> <script src="//cdnjs.cloudflare.com/ajax/libs/dygraph/2.1.0/dygraph.min.js"></script> <link rel="stylesheet" src="//cdnjs.cloudflare.com/ajax/libs/dygraph/2.1.0/dygraph.min.css" /> </head> <body> <h3>Test</h3> <div id="graphdiv2"></div> <script type="text/javascript"> g2 = new Dygraph( document.getElementById("graphdiv2"), "testdata.dat", { labels: [ "Date", "Temperature", "Col3", "Col4", "Col5" ], } // options ); </script> </body> </html>
数据文件内容(testdata.dat)
2018/01/12 17:59:04,22.18,22.34,28.44,20.31 2018/01/12 17:59:06,22.19,22.68,28.44,20.14 2018/01/12 17:59:08,22.18,22.32,28.44,20.31 2018/01/12 17:59:10,22.18,22.35,28.38,20.31 2018/01/12 17:59:12,22.18,22.37,28.38,20.31 2018/01/12 17:59:14,22.18,22.39,28.44,20.31
解答:这是完全预期的现象
核心原因和浏览器对不同文件后缀的解析逻辑直接相关:
- .dat后缀的问题:
.dat是一个通用的、无统一标准的数据文件后缀,浏览器无法直接判断它的格式。当服务器返回这个后缀的文件时,如果没有明确指定Content-Type响应头,Firefox会默认尝试用XML解析器处理它。而你的文件是逗号分隔的CSV文本,完全不符合XML的标签结构语法,因此触发了XML解析错误。 - .csv后缀的作用:
.csv是标准的逗号分隔值文件后缀,服务器通常会自动为这类文件设置Content-Type: text/csv的响应头。Firefox识别到这个头后,就知道这是文本格式的CSV数据,会用对应的文本解析器处理,不会再调用XML解析器,自然就不会报错了。 - 额外解决思路:如果你不想修改文件名,也可以通过配置服务器,给
.dat文件设置正确的Content-Type(比如text/plain或text/csv),同样能避免这个错误。不过改成.csv是更符合直觉和行业惯例的做法,毕竟你的文件本质就是CSV格式。
内容的提问来源于stack exchange,提问作者VMQ
相关产品推荐
相关产品推荐

