我必须使用单个参数(XML 格式的字符串)调用 Web 服务。我正在通过 XSLT 转换来构建它。到现在为止还挺好。
问题在于这个 XSD 片段:
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="title" type="xs:string" minOccurs="1"/>
<xs:element name="content" type="xs:base64Binary" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
它将(例如)翻译成这个 XML:
<attachment>
<title>test title</title>
<content>
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Inllc
yI/Pg0KPG1zZ3ByYXRpY2E+DQogICAgPHByYXRpY2E+DQogICAgICAgIDxwcm9jZXNzbz
4NCiAgICAgICAgICAgIDxjb2RQcm9jZXNzbz4xPC9jb2RQcm9jZXNzbz4NCiAgICAgICA
gICAgIDxjb2RJc3RhbnphUHJvY2Vzc28MzwvY29kSXN0YW56YVByb2Nlc3NvPg0KICAgI
CAgICAgICAgPGNvZFN0YXRvPjYwPC9jb2RTdGF0bz4NCiAgICAgICAgPC9wcm9jZXNzbz
4NCiAgICA8L3ByYXRpY2E+DQo8L21zZ3ByYXRpY2E+
</content>
</attachment>
是的,你没看错:我必须以 base 64 二进制格式将文件内容插入 XML 文档。
我想过用 XSLT 插入一个占位符,然后处理 XML 文档以将其替换为实际的文件内容,但我想知道这些场合是否有任何最佳实践,也许是一些超出我知识的花哨 XSTL 技巧或一些 Java可能派上用场的工具。
你会怎么做?
注意:我不能使用带有附件的 SOAP,而且我很清楚上述方法在附件很大的情况下容易失败,但目前我们的对手不会让步。