2011-02-01 273 views
1


使用JDOM解析xml文件時出現此錯誤。
發生了什麼是,我收到一個數據流,這是一個XML結合PDF作爲其中的附件。所以當我嘗試創建它的文檔時,會拋出這個錯誤。
我試圖打印此流和控制檯我得到以下的,它與大量的垃圾字符(PDF格式的內容),但在寫字板它看起來像 -使用JDOM解析XML時出錯 - 在序言中不允許使用內容

------=_Part_2_23286828.1296553488632 
Content-Type: text/xml; charset=utf-8 

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
.... 
.... 
.... 
    <Attachment> 
     <URI>Filename.pdf</URI> 
    </Attachment> 
</SOAP-ENV:Envelope> 
------=_Part_2_23286828.1296553488632 
Content-Type: application/pdf; name="Filename.pdf" 
Content-Transfer-Encoding: binary 
Content-ID: </Attachment[1]/URI[1]> 
Content-Disposition: attachment; filename="Filename.pdf" 

%PDF-1.4 
%âãÏÓ 
4 0 obj <</Type/XObject/ColorSpace/DeviceRGB/Subtype/Image/BitsPerComponent 8/Width 579/Length 52722/Height 480/Filter/DCTDecode>>stream 
ÿØÿà 

請注意,<SOAP-ENV:Envelope>之間的XML </SOAP-ENV:Envelope>格式良好。
我該如何去創建一個JDOM文檔?我想,通過刪除XML開始/結束標記前後的內容,但如何在一個乾淨的方式嗎?
我讀到從Apache IO Commons BOMInputStream是有幫助的,但我相信它是在版本2. *和我使用的版本1.3.1

我希望這解釋了我的問題,如果不請讓我知道。
謝謝。

UPDATE
起初我並沒有意識到這會很麻煩。
其實,我正在使用HttpURLConnection從一個servlet調用另一個(doPost)。返回的形式是這個流。
現在,我也試圖探索是否可以使用Http/URLConnection提供的一些方法來提取xml部分。
欣賞是否有人可以更多地瞭解這一點。

回答

1

此消息符合附帶規範的SOAP(http://www.w3.org/TR/SOAP-attachments)。在java中,解析這些消息的方法是使用SAAJ(Soap with Attachments API for Java:http://download.oracle.com/javaee/5/tutorial/doc/bnbhf.html。)。SAAJ有幾種不同的實現方式。我個人最喜歡的是Spring-WS實現,另一個選擇是Apache Axiom。

我的建議是使用Spring-WS或Apache Axis來處理此消息,而不是嘗試從輸入流手動執行此操作。你想在服務器端還是客戶端執行此操作?

相關問題