我有一个从 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。
2 回答
![?](http://img1.sycdn.imooc.com/533e4c7b00013f3c02400205-100-100.jpg)
心有法竹
TA贡献1866条经验 获得超5个赞
XML 是一种基于文本的容器。如果不将二进制数据转换为某种基于字符的翻译,就不能将二进制数据放置在基于文本的容器中。
大多数引擎将采用二进制并将其编码为base64
隐式。
C#XmlWriter
有方法XmlWriter.WriteBase64
。
当然,您可以使用Convert.ToBase64String()
自己来翻译它并将其作为任何其他字符串值传入。
完全没有必要考虑这个......
只是提一下:CDATA
这里不需要一个部分。CDATA
是你根本不需要的东西,应该避免......
![?](http://img1.sycdn.imooc.com/545850c80001ebf202200220-100-100.jpg)
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
你必须这样做:
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 编码。
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消