我正在使用Java的DocumentBuilder.parse(InputStream)
來解析XML文檔。偶爾,我得到格式不正確的XML文檔,因爲最後的>
導致SAXException: Content is not allowed in trailing section
後有額外的垃圾。 (在我看到的情況下,垃圾只是一個或多個空字節。)忽略「內容不被允許在尾部」SAXException
我不在乎最後的>
之後會發生什麼。有沒有簡單的方法來解析Java中的整個XML文檔,並讓它忽略任何後續垃圾?
請注意,通過「忽略」,我並不是簡單地意味着要捕捉並忽略該異常:我的意思是忽略尾隨垃圾,不會拋出異常,並返回Document
對象,因爲XML至多包括最終>
有效。
我無法控制發件人。而你的「答案」並不符合「你接受的要寬鬆,對你的要求嚴格」。 – 2010-05-11 23:31:15
您問「是否有一種簡單的方法來解析Java中的整個XML文檔,並讓它忽略任何後續垃圾?」答案是「不,沒有」,我給出了原因。也許你正在尋找http://home.ccil.org/~cowan/XML/tagsoup/?也許你知道你的XML沒有CDATA,你可以實現一個原始的inputStream包裝器?我不確定你在找什麼答案。 – 2010-05-12 00:01:07
每個XML解析器都會跟蹤每個元素,並通過解析其結束標記的>來知道何時該元素已「關閉」。這意味着每個XML解析器也知道最終>何時它看到它,因爲第一個元素已通過其結束標記進行了平衡。那時候,我想讓解析器停下來。你讓這個比現在更復雜。 – 2010-05-12 00:24:06