2009-11-08 135 views
2

我必須以XML格式發送二進制數據,並且這樣做的標準方式是使用base64;然而,我有兩個選擇:Base64 XML二進制內容

  • 存儲二進制成的xs:使用Base64Binary
  • 存儲中的base64二進制的UTF-8編碼的字符串表示爲XS:字符串元素

在第一情況下的模式顯示如下:

<xs:element name="Image" type="xs:base64Binary" /> 

在第二種情況下的模式顯示如下:

<xs:element name="Image" type="xs:string" /> 

我懷疑第一個選項是「更正確」,但它生成的XML比第二個選項大。 XML實例中的第一個元素以「U1Vrc ...」開頭,第二個元素以「SUkqAAA ..」開頭等。

哪一個是最常見的?

+0

我的經驗是,大多數人不使用XML來發送二進制文件。但是,如果你必須使用'base64Binary'或'hexBinary'數據類型。 – 2016-03-16 17:31:24

回答

2

最好的選擇是不要將二進制數據存儲在XML中,單獨發送它並讓XML根據需要引用外部數據。但是,如果您必須直接將其存儲在XML中,那麼base64Binary和hexBinary是二進制數據的唯一內置數據類型,但它們當然不是唯一的選擇。還有其他算法可用,它們還使用與XML字符串兼容的字母/數字字母來編碼數據。搜索周圍,或設計自己的語法,只編碼受XML限制的二進制字節,並保留其餘部分未編碼。

+0

我理解這些選項,但我試圖找出是否存在「已接受」或更廣泛使用的選項,因爲這將提供給第三方向我們提交二進制數據。 – 2009-11-10 12:29:02

+0

然後,你基本上堅持base64,因爲這是XML本身支持的最緊湊和標準的格式。 – 2009-11-11 20:12:48