我有一个字节数组
public byte[] values;
我用数据填充
new byte[64];
我序列化它,我得到以下XML部分:
<values>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</values>
我在SO中找到了以下解决方案:
[XmlElement("values", DataType = "hexBinary")]
public byte[] values;
现在我使用“0”而不是“A”获得与上面相同的XML。
当我序列化时,例如一个Int16 / Int32 / sbyte数组。我在XML中得到这样的东西:
<values>0</values>
<values>0</values>
<values>0</values>
采用垂直安排。
现在我的问题:是否可以在垂直排列中获得字节数组?赞:
<values>00</values>
<values>00</values>
<values>00</values>
标记
答案 0 :(得分:4)
public class Test
{
public List<byte> Bytes { get; set; }
}
var xml = new XmlSerializer(typeof(Test));
xml.Serialize(File.Open("test.xml",FileMode.OpenOrCreate),
new Test
{
Bytes = new List<byte> {0,1,2,3,4,5,6,7}
});
会产生一个xml文件,如:
<?xml version="1.0"?>
<Test xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Bytes>
<unsignedByte>0</unsignedByte>
<unsignedByte>1</unsignedByte>
<unsignedByte>2</unsignedByte>
<unsignedByte>3</unsignedByte>
<unsignedByte>4</unsignedByte>
<unsignedByte>5</unsignedByte>
<unsignedByte>6</unsignedByte>
<unsignedByte>7</unsignedByte>
</Bytes>
</Test>
答案 1 :(得分:0)
我猜你必须明确地为数组中的每个字节创建一个新的XML元素。您也可以使用List<byte>
或Array<byte>
来代替原始数组。
正如the_ajp在评论中所说。
如果您在尝试序列化列表时遇到错误,那么您做错了。发布代码,也许我们可以提供帮助。