1


使用 JDOM 解析 xml 文件时出现此错误。
正在发生的事情是,我收到一个数据流,它是一个 xml 与一个 pdf 结合作为其中的附件。因此,当我尝试创建它的文档时,会引发此错误。
我试图打印这个流,在控制台上我得到以下信息,它有很多垃圾字符(pdf内容),但在写字板中它看起来像 -

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

4

1 回答 1

1

此消息符合 SOAP with Attachment 规范 (http://www.w3.org/TR/SOAP-attachments)。在 Java 中,解析这些消息的方法是使用 SAAJ 的实现(Java 的带有附件 API 的肥皂:http: //download.oracle.com/javaee/5/tutorial/doc/bnbhf.html。)有一个那里有几个不同的 SAAJ 实现。我个人最喜欢的是 Spring-WS 实现,另一个选择是 Apache Axiom。

我对您的建议是使用 Spring-WS 或 Apache Axis 来处理此消息,而不是尝试从输入流中手动执行。您是在服务器端还是在客户端尝试这样做?

于 2011-02-01T15:32:23.783 回答