首页 > 解决方案 > C# - 如何将二进制字节数组写入 XML 中的 CData 属性

问题描述

我有一个从 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。

标签: c#xmlcdata

解决方案


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

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

C#XmlWriter方法XmlWriter.WriteBase64.

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

根本不需要考虑这个……

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


推荐阅读