我有一个名为 School 的类,它是可序列化的。当它序列化/反序列化时,我需要将根元素称为学校而不是学校,而不必将类(class)名称更改为学校。所以我通过以下方式使用了 xmlroot 属性:
[XMLRoot(ElementName = "学校")]
我也试过:
[XMLRoot("学校")]
这些都没有做任何事情,生成的 XML 文件包含一个名为 School 的根元素。
我错过了什么吗?
最佳答案
我看不出可能是什么问题,但以下代码适用于 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" />
关于c# - 在 Monotouch 中正确使用 XMLRootAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032199/