[英]How to Decode base 64 data
我有一個XML文檔,其中有一個像這樣的圖像標簽
如果有圖像,則標簽如下
<thumbnail>
<type>IMAGE JPG</type>
<data> base64 data </data>
</thumbnail>
如果沒有圖像
<thumbnail/>
我想使用DOM解析器獲取base64編碼的圖像,以及如何處理沒有<thumbnail/>
類的圖像的標簽
在XML文檔中,將有任意數量的標簽。
COS軟件包具有Base64Decoder 。 Apache Commons Codec提供了一種替代方法 。 也可以使用sun.misc.BASE64Decoder
,但這使代碼成為特定於Sun JDK的代碼。
作為DOM編碼的替代方法,您可以在XSLT樣式表中以聲明方式進行。
XSLT沒有任何可用於base64解碼的內置功能,但是您可以使用Saxon擴展功能xs:base64Binary-to-octet使用XSLT樣式表中的Java FileOutputStream將其流式傳輸到文件中:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:saxon="http://saxon.sf.net/"
xmlns:fos="java.io.FileOutputStream">
<xsl:template match="/">
<!--Your example did not reveal the document structure.
Assuming thumbnail elements are children of the document element-->
<xsl:apply-templates select="*/thumbnail" />
</xsl:template>
<!--For thumbnail elements that contain data, decode the BASE64 encoded content and write to file -->
<xsl:template match="thumbnail[data]">
<xsl:variable name="img" select="concat('c:\test\', position(), '.jpg')"/>
<xsl:variable name="fos" select="fos:new(string($img))"/>
<xsl:value-of select="fos:write($fos,saxon:base64Binary-to-octets(xs:base64Binary(data/text())))"/>
<xsl:value-of select="fos:close($fos)"/>
</xsl:template>
<!--Do nothing with empty thumbnail elements-->
<xsl:template match="thumbnail" />
</xsl:stylesheet>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.