为了账号安全,请及时绑定邮箱和手机立即绑定

C# - 如何将二进制字节数组写入 XML 中的 CData 属性

C# - 如何将二进制字节数组写入 XML 中的 CData 属性

C#
慕仙森 2021-07-02 17:03:40
我有一个从 IXmlSerializable 实现的 XML。我想添加一个 CData 属性,以便我可以将二进制数据添加到 XML 中的属性。我将传递 XML 并在另一个应用程序中使用二进制数据。我知道有些字符将无法翻译某些字符,但忽略这一事实,我将如何实现这一目标?我从 stackoverflow 尝试了几种方法,但都没有成功。    [XmlElementAttribute(ElementName = "test", Form = XmlSchemaForm.Unqualified)]    [XmlElement("CDataElement")]    public RawXml test    {        get        {            return test;        }        set        {            test= value;        }    }                                   byte[] bAry= BinaryData;item.Property= new CustomXML(bAry);“item”和“CustomXML”都源自 IXmlSerializable。
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

XML 是一种基于文本的容器。如果不将二进制数据转换为某种基于字符的翻译,就不能将二进制数据放置在基于文本的容器中。

大多数引擎将采用二进制并将其编码为base64隐式。

C#XmlWriter方法XmlWriter.WriteBase64

当然,您可以使用Convert.ToBase64String()自己来翻译它并将其作为任何其他字符串值传入。

完全没有必要考虑这个......

只是提一下:CDATA这里不需要一个部分。CDATA是你根本不需要的东西,应该避免......


查看完整回答
反对 回复 2021-07-10
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

你必须这样做:


Convert.ToBase64String(yourBinaryData) 并将其作为 CData 中的字符串传递,然后在另一端您需要使用: Convert.FromBase64String(yourCDataText)


如果你真的想通过 XML 发送二进制数据,你可以这样做:


<DATA>

  <BINARY>

    <BIT index="0">0</BIT>

    <BIT index="1">0</BIT>       

    ...

    <BIT index="99">1</BIT>

  </BINARY>

</DATA>

但是,您最好只进行 base64 编码。


查看完整回答
反对 回复 2021-07-10
  • 2 回答
  • 0 关注
  • 187 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信