2011-12-15 64 views
0

我試圖解析使用DocumentBuilderparse方法,這需要URI作爲參數的XML。爲此,我創建表示URI一個String對象,然後調用parse方法傳遞String對象作爲參數。的SAXParseException當URL是不存在的

parse方法調用工作正常,返回一個新的DOM對象。但是,當我嘗試打印返回的DOM對象時,它說:

org.xml.sax.SAXParseException:跟在根元素後面的文檔中的標記必須格式良好。用於解析XML中的代碼段如下所示:

String sURL="http://host:port/myapp/myfile.xml"; 
DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();  
doc = dBuilder.parse(sURL); 

然而,當URL是一個不存在的一個,解析方法仍返回

org.xml.sax中。 SAXParseException:文檔中跟在 之後的標記必須是格式良好的。

的XML是一種正常的XML,東西如下圖所示:

<?xml version="1.0" encoding="utf-8"?> 
<Data> 
    <ColorMessages> 
     <Message Color="RED">Warning: The batch color level is red. Please check it out!</Message> 
     <Message Color="YELLOW">Alert: This batch color level is yellow. Please stay on alert!</Message> 
     <Message Color="GREEN">Cool: The batch color level is green. Nice!</Message> 
     <Message Color="BLUE">Excellent: The batch color level is blue. Great job!</Message> 
    </ColorMessages> 
</Data> 

上我怎麼可能parse方法調用過程中識別一個不存在的網址有什麼想法?

謝謝。

+0

myfile.xml的內容是怎樣的?如果URL不存在,它可能會拋出一個`IOException`。 http://docs.oracle.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilder.html#parse%28java.lang.String%29 – 2011-12-15 05:35:06

回答

2

我個人更喜歡建立網絡連接,或打開文件自己,只是通過流的XML子系統。它有更多的工作,但是你可以控制他正在發生的事情。即你不依賴別人認爲在這種情況下是一個好主意。

當你這樣做,你還需要確保您關閉流。下面的XML位不會做出你想要的。

相關問題