2011-02-01 68 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来处理此消息,而不是尝试从输入流手动执行此操作。你想在服务器端还是客户端执行此操作?

相关问题