c# - 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。
解决方案
XML 是基于文本的容器。如果不将二进制数据转换为某种基于字符的翻译,就无法将二进制数据放入基于文本的容器中。
大多数引擎将采用二进制文件并将其编码为base64
隐式。
C#XmlWriter
有方法XmlWriter.WriteBase64
.
当然,您可以使用Convert.ToBase64String()
它来自己翻译并将其作为任何其他字符串值传递。
根本不需要考虑这个……
顺便提一下:这里不需要一个CDATA
部分。CDATA
是你根本不需要的东西,应该避免......
推荐阅读
- node.js - 每次我想安装一个新的节点模块时,我是否必须停止反应本机服务器
- java - 尝试在tomcat 9中加载maven项目,显示A child container failed during start
- flutter - 在扑扑的 PlatformTextField 中找不到“验证器”和“提示文本”
- asp.net-core-mvc - SonarCloud .NET Core 覆盖范围非常严格。有什么办法可以改变这个吗?
- c - 打印阵列时出现程序终止错误
- python - 将 Django 安装到 Windows 8.1
- javascript - 映射对象数组并在某个位置显示另一个元素
- pandas - 将不同大小的列与熊猫进行比较
- typescript - 如何在 keyof 声明中指定值的类型?
- r - 时间序列横截面数据回归的面板校正标准误差