如何解决docbuilder SAX异常:意外的文档结束?

时间:2010-03-15 10:24:01

标签: java xml

我有一项服务,以xml格式提供一些汽车信息。

<?xml version="1.0" encoding='UTF-8'?>
<cars>
   <car>
      <id>5</id>
      <name>qwer</name>
   </car>
   <car>
      <id>6</id>
      <name>qwert</name>
   </car>
</cars>

现在我遇到的问题是我的

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xml);

有时抛出一个SAXException(有时它工作得很好,但是当我重新启动服务器(仍处于开发阶段)时,我有时会继续使用它)因为SAXException:意外的文档结束。

但是当我在那里放置一个缓冲区读取器以查看它正在接收的内容时,我将该值复制到xml文档中,然后在firefox中打开它,即它看起来很好。

2 个答案:

答案 0 :(得分:2)

XML文档必须只有一个根元素。

你应该有一个<cars>元素(或类似的)包裹你的<car>组。

错误消息没有意义 - 因为在文档结尾之后你有意想不到的内容。

答案 1 :(得分:1)

您得到此异常,因为您输入的示例是有效的XML片段(因此可由Firefox读取),但是XML文档无效,因为它具有多个根节点,XML规则禁止这样做。 尝试为每个<car>标记创建一个XML文档,SAX就可以了。