这是我的第一个问题,所以告诉我任何缺少的东西,所以我可以添加它。SAXParseException在一种情况下,但没有在其他情况下,当使用相同的XML
现在,我们有一个使用tomcat 7的部署,我们有5个servlet可以修改SQLServer数据库中的一些数据,基于从5个.jar(每个servlet一个)读取的几个.XML,以及所有这些.jar是由.war发起的,我试图修改它,使它停止作为一个servlet工作,并且您可以在本地运行修改。
我在这两种情况下(通过Tomcat和我的本地“run.bat”)具有相同的配置,他们都使用相同的库读取文件,所以没有机会,其中之一读取.XML这是没有验证,但在本地方案我得到“org.xml.sax.SAXParseException:内容不允许在序言中”
这是生成问题的行(“文件”是文件的路径) :
public void procesarArchivo(String file) throws SAXException, IOException, SAXException {
xr.parse(new InputSource(new StringReader(leerXML(file))));
/* i do stuff here*/
}
public String leerXML(String XMLName) {
String line = "";
StringBuffer sb = new StringBuffer();
try {
InputStream is = this.getClass().getClassLoader().getResourceAsStream(XMLName);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
is.close();
} catch (Exception e) {
sb.append(e.getMessage());
}
return sb.toString();
}
这里有.log文件与everithing做工精细该servlet:
INFO [Thread-1 ] - [[Cargando_reglas_del_sistema]]...
DEBUG [Thread-1 ] - [[Procesando_Archivo]]: com/systech/reglas/xml/reglas_0.xml
DEBUG [Thread-1 ] - [[Leyendo_regla]]: CTRLDOCURE.sql
/*... and so on with all the .sql*/
在这里你可以看到本地.log文件(使用与以前相同的库),当它显示“procesando archivo”意味着该文件已被找到,但随后尝试读取它时:
INFO [main ] - [[Cargando_reglas_del_sistema]]...
DEBUG [main ] - Procesando Archivo: com/systech/reglas/xml/reglas_0.xml
ERROR [main ] - org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; El contenido no está permitido en el prólogo.
我不明白为什么其中一个工作,而另一个不是当它执行相同的代码时。
任何帮助将受到赞赏,而对于英文不好