- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对 xml 序列化有一个奇怪的要求。
请引用以下 C# 代码(由于变量 'rootName' 超出范围而无法编译)。我的意图是让我的类(class) GeneralData 成为“一般”。这意味着该类可以根据类构造函数的输入参数序列化为具有不同根元素的不同 XML 字符串。
[XmlRoot(ElementName = rootName)]
public class GeneralData : Dictionary<String, Object>, IXmlSerializable
{
public string rootName;
public GeneralData(string rootName)
{
this.rootName = rootName;
}
public System.Xml.Schema.XmlSchema GetSchema()
{
throw new NotImplementedException();
}
public void ReadXml(System.Xml.XmlReader reader)
{
throw new NotImplementedException();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
foreach (var key in Keys)
{
var value = base[key];
writer.WriteElementString(key, value.ToString());
}
}
}
谁能帮我完成任务?也许以完全不同的方式?提前致谢!!
最佳答案
IXmlSerializable
无法控制根元素。所以不,你不能真的那样做。您可以做的最接近的做法是使用 new XmlSerializer(...)
和允许您在运行时(在构造函数中)指定根名称的重载,但您应该谨慎:非- XmlSerializer
的普通构造函数不使用内置的序列化器缓存,这意味着:您最终可以根据 new XmlSerializer(...)
创建一个新程序集,并且程序集永远不会卸载。如果您不为序列化程序实例添加自己的缓存层,这可能会导致内存泄漏问题。
关于c# - IXmlSerializable 和 XmlRootAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12779940/
我有一个正在使用 C# 的 XmlSerializer 序列化的类.它标有 XmlRoot属性,我想在派生类中继承这个属性。 查看文档,它没有说 XmlRoot 使用 AttributeUsageAt
我对 xml 序列化有一个奇怪的要求。 请引用以下 C# 代码(由于变量 'rootName' 超出范围而无法编译)。我的意图是让我的类(class) GeneralData 成为“一般”。这意味着该
我有一个名为 School 的类,它是可序列化的。当它序列化/反序列化时,我需要将根元素称为学校而不是学校,而不必将类(class)名称更改为学校。所以我通过以下方式使用了 xmlroot 属性: [
基本上问题是我有一组存在于多个命名空间中的 XML 标记,但是因为 XML 命名空间是愚蠢的,这是不允许的,所以我需要在运行时根据数据的去向换出命名空间。 假设我有这个用于序列化/反序列化 XML 的
我目前遇到了一个非常奇怪的问题,我似乎无法弄清楚如何解决它。 我有一个相当复杂的类型,我正在尝试使用 XmlSerializer 类对其进行序列化。这实际上运行良好并且类型正确序列化,但这样做似乎花费
这是我的 xml: ohKiUAZWz2 ミ★нιяαℓ §|-|ä|-|»♥«
我有以下 XML TWTR twitter.com FB facebook.com SO stackoverflow.
我有一个名为 Car 的类,它有一个名为 LicencePlate 的属性,当我用 XmlRootAttribute Cars 序列化一个列表时,创建的 XML 是 序列化代码是 XmlS
我想在 C# 中预取一组已知类类型的 XmlTypeMapping 以加速它们的 XML 反序列化,同时将新的 XmlSerializer 实例化为 XmlReflectionImporter.Imp
我是一名优秀的程序员,十分优秀!