【问题标题】:org.xml.sax.SAXParseException: Premature end of fileorg.xml.sax.SAXParseException:文件过早结束
【发布时间】:2011-08-19 03:18:55
【问题描述】:

这是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<settings></settings>

我的方法如下所示

public  void load( String fileName ) {
...
Document xmlDocument = null;
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try
{
  builder = dbFactory.newDocumentBuilder();
  xmlDocument = builder.parse(new File (fileName));
}
catch( Exception e )
{
  Log.write(e);
}
...
}

当我调用我的方法时,我会收到以下信息:

[task] org.xml.sax.SAXParseException: Premature end of file.
[task] at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249)
[task] at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
[task] at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)
[task] at MyClass.load(MyClass.java:49)

我完全糊涂了。

感谢您的任何想法。

-西里尔

【问题讨论】:

  • builder.parse() 之前检查File.exists(),以确保它在您认为的位置。
  • 我尝试运行这段代码,它对我有用。
  • 我一直认为这是一个编码问题(声明的utf-8 xml文件编码为非utf-8),但我的测试并没有证明。

标签: java xml xml-parsing sax


【解决方案1】:

struts.xml 文件中可能存在问题。 struts.xml 文件中必须包含以下行。

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

并且&lt;package&gt;标签必须写在sturts.xml文件内的&lt;struts&gt;标签内。

【讨论】:

  • 如果文档格式不正确,任何 xml 文件都可能存在问题。
【解决方案2】:

确保内容类型content-type:text/xml; charset=utf-8

【讨论】:

  • 不,很遗憾,内容类型没有问题
猜你喜欢
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
相关资源
最近更新 更多