豆角茄子子

导航

Kettle8.1转换组件XSLT异常Content is not allowed in prolog

Kettle8.1版本,准备好正确的xml和xsl文件,再配置好如下流程,转换报错:

net.sf.saxon.trans.XPathException:org.xml.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.

该问题是Kettle8.1的一个bug,网上查找了此异常的说法,可参考如下链接:

https://blog.csdn.net/zhengyangzkr/article/details/76717439

大都说是由于windows平台把utf-8 格式的文件在前边加了 EF BB BF三个字节,导致解析xml的时候报错。

接下来,查看代码对应类Xslt.java发现是转换xml文件报错:

对比查看作业-XSLT可以正常使用,故对比查看代码对应类JobEntryXSLT.java发现,其使用字节流,而转换里的XSLT使用StringReader字符流:

从作业-XSLT的实现及参考网上关于该异常的说法来看,判断问题原因是,XML文件开头代表编码的几个字节不能被字符流正确识别解析为XML文件的字符。

所以解决此问题可以按照作业组件中的XSLT的处理XML的方式,即以字节流读取XML文件,最终运行成功。

posted on 2018-12-16 12:21  豆角茄子子  阅读(449)  评论(0编辑  收藏  举报