C# - 如何将二进制字节数组写入XML

时间:2018-05-29 13:55:59

标签: c# xml cdata

我有一个从IXmlSerializable实现的XML。我想添加一个CData属性,以便我可以将二进制数据添加到XML中的属性。我将传递XML,而在另一个应用程序中使用二进制数据。

我知道某些角色无法翻译某些characters 但忽略了这一事实,我将如何实现这一目标?我尝试了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 个答案:

答案 0 :(得分:1)

XML是基于文本的容器。您不能将二进制数据放在基于文本的容器中,而不将其转换为某种基于字符的转换

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

C#XmlWritermethod XmlWriter.WriteBase64

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

根本没有必要考虑这个......

仅举几个:此处不需要CDATA部分。 CDATA是你根本不需要的东西,应该避免......

答案 1 :(得分:0)

你必须这样做:

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编码。