2010-03-15 105 views
0

我有一个服务,以xml格式提供一些汽车信息。如何解决docbuilder SAX异常:文档意外结束?

<?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(有时它工作得很好,但是当我重新启动服务器(仍在开发中)我有时使得到它)与as原因SAXException:意外的文档结束。

但是,当我放置一个bufferreader在那里,看看它的接收和我复制值到一个XML文件,我打开它在Firefox/IE它看起来就好。

回答

2

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

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

虽然错误信息没有意义 - 因为在文档结束后应该有意外的内容。

+0

哎呀,错误的片段,忘了周围的标签。 – user211992 2010-03-15 10:50:21

+0

假设它仍然是尝试手动重新创建实际数据,而不是实际导致问题的数据? – Quentin 2010-03-15 11:11:55

+0

正确。 实际数据有一些更多信息和消息 但我不认为问号或@符号可能导致此问题。 – user211992 2010-03-15 11:26:10

1

由于您输入的示例是一个有效的XML片段(因此Firefox可读),但是由于它具有多个根节点而被XML规则禁止的无效XML文档,您会得到此异常。 尝试为每个<car>标签创建一个XML文档,并且SAX将会正常。