2010-03-15 56 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將會正常。