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。


慕仙森
浏览 188回答 2
2回答

心有法竹

XML 是一种基于文本的容器。如果不将二进制数据转换为某种基于字符的翻译,就不能将二进制数据放置在基于文本的容器中。大多数引擎将采用二进制并将其编码为base64隐式。C#XmlWriter有方法XmlWriter.WriteBase64。当然,您可以使用Convert.ToBase64String()自己来翻译它并将其作为任何其他字符串值传入。完全没有必要考虑这个......只是提一下:CDATA这里不需要一个部分。CDATA是你根本不需要的东西,应该避免......

翻过高山走不出你

你必须这样做:Convert.ToBase64String(yourBinaryData) 并将其作为 CData 中的字符串传递,然后在另一端您需要使用: Convert.FromBase64String(yourCDataText)如果你真的想通过 XML 发送二进制数据,你可以这样做:<DATA>&nbsp; <BINARY>&nbsp; &nbsp; <BIT index="0">0</BIT>&nbsp; &nbsp; <BIT index="1">0</BIT>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; ...&nbsp; &nbsp; <BIT index="99">1</BIT>&nbsp; </BINARY></DATA>但是,您最好只进行 base64 编码。
打开App,查看更多内容
随时随地看视频慕课网APP