使用JDOM解析XML时出错 - prolog中不允许使用内容

时间:2011-02-01 11:14:52

标签: java xml xml-parsing jdom


   我在使用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部分。
感谢是否有人可以对此有所了解。

1 个答案:

答案 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来处理此消息,而不是尝试从输入流手动执行此操作。您是在服务器端还是在客户端尝试这样做?