gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:11 25 4
gpt4 key购买 nike


我在使用 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 到另一个 servlet (doPost) 进行调用。返回就是这个流的形式。
现在,我也在尝试探索是否可以使用 Http/URLConnection 提供的一些方法来提取 xml 部分。
如果有人能对此提供更多说明,我将不胜感激。

最佳答案

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

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

关于java - 使用 JDOM 解析 XML 时出错 - 序言中不允许内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com