我有一个名为School的课程,可以序列化。当它序列化/反序列化时,我需要将根元素称为school而不是School,而不必将类名更改为school。所以我用以下方式使用了xmlroot属性:
[XMLRoot(ElementName =“school”)]
我也尝试过:
[XMLRoot( “学校”)]
这些都没有做任何事情,结果XML文件包含一个名为School的根元素。
我错过了什么吗?
答案 0 :(得分:0)
我看不出可能出现什么问题,但以下代码适用于MonoTouch 4(也许你会发现它与你自己的代码有所不同)。
我定义了一个类:
[XmlRoot ("School")]
public class Wrong {
public string Name { get; set; }
}
然后我将它序列化为一个MemoryStream,然后读入一个字符串。
Wrong bad = new Wrong ();
XmlSerializer ser = new XmlSerializer(typeof(Wrong));
using (MemoryStream ms = new MemoryStream ()) {
ser.Serialize (ms, bad);
ms.Position = 0;
StreamReader sr = new StreamReader (ms);
string st = sr.ReadToEnd ();
}
'st'的值是:
<?xml version="1.0" encoding="utf-8"?>
<School xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />