我想在xml消息中发送一个pdf文件。如何在Java中实现?在模式中使用什么数据类型?
你可以将PDF文件转换为Base64二进制,并将其包装在类型为xs:base64Binary
的容器元素中。例如,您可以使用此模式定义将PDF文件放置在XML消息中。
<xs:complexType name="documentType">
<xs:sequence>
<xs:element minOccurs="0" name="mimetype" type="xs:string" />
<xs:element minOccurs="0" name="filename" type="xs:string" />
<xs:element name="content" type="xs:base64Binary" />
</xs:sequence>
</xs:complexType>
如果您的项目已经使用了commons-codec
,那么可以使用org.apache.commons.codec.binary.Base64
来实现这个功能。它支持对分块数据和字符串进行编码。例如:
// You can read in the PDF file with FileReader and get the bytes
// Please obey that this solution must be improved for large pdf files
Base64.encodeBase64(binaryData, true)
我建议您在某些标签中使用字节数组。例如:
<file>
<name>Test.pdf</name>
<content>here are the bytes of the file</content>
</file>
您可以使用JAXB从对象自动创建XML文件。