簡體   English   中英

如何解碼Base 64數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM