我在使用JDOM解析xml文件时遇到此错误
发生的事情是,我收到一个数据流,它是一个xml,并附有一个pdf作为附件。因此,当我尝试创建它的文档时,会抛出此错误
我试图打印这个流,并在控制台上得到以下内容,它有很多垃圾字符(pdf内容),但在Wordpad中看起来像 -
------=_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>
和</SOAP-ENV:Envelope>
之间的xml格式正确
我怎么能去创建一个JDOM文档呢?我想,通过删除xml开始/结束标记之前和之后的内容,但是如何以干净的方式?
我从Apache IO Commons读到BOMInputStream是有帮助的,但我相信它是在版本2. *我使用的是版本1.3.1
我希望这能解释我的问题,如果不是请告诉我。
谢谢。
UPDATE
起初我并没有意识到这会很麻烦
实际上,我正在使用HttpURLConnection从一个servlet调用另一个(doPost)。返回是以此流的形式
现在,我也试图探索是否可以使用Http / URLConnection提供的一些方法以任何方式提取xml部分。
感谢是否有人可以对此有所了解。
答案 0 :(得分:1)
此消息符合SOAP with Attachment规范(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来处理此消息,而不是尝试从输入流手动执行此操作。您是在服务器端还是在客户端尝试这样做?