我有一个从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。
答案 0 :(得分:1)
XML是基于文本的容器。您不能将二进制数据放在基于文本的容器中,而不将其转换为某种基于字符的转换。
大多数引擎会采用二进制文件并将其base64
隐式编码。
C#XmlWriter
有method 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编码。