我到处寻找并且没有一个回复是有效的,或者问题只是略微偏离到没有得到我需要的答案。鉴于我所寻找的所有搜索,.Net的xml序列化实现似乎存在一个巨大的缺陷。
默认值:
[XmlRoot("root", Namespace="http://myclass.org/")]
public class MyClass
{
}
void Main() {
XmlSerializer ser = new XmlSerializer(typeof(MyClass));
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add("mc", "http://myclass.org/");
ser.Serialize(new StreamWriter(Console.Out), new MyClass(), xsn);
}
输出:
<?xml version="1.0"?>
<mc:root xmlns:mc="http://myclass.org/">
</mc:root>
IXmlSerializable的:
[XmlRoot("root", Namespace="http://myclass.org/")]
public class MyClass : IXmlSerializable
{
public XmlSchema GetSchema() {return null;}
public void ReadXml(XmlReader reader) {}
public void WriteXml(XmlWriter writer) {}
}
void Main() {
XmlSerializer ser = new XmlSerializer(typeof(MyClass));
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add("mc", "http://myclass.org/");
ser.Serialize(new StreamWriter(Console.Out), new MyClass(), xsn);
}
输出:
<?xml version="1.0"?>
<root xmlns="http://myclass.org/">
</root>
WHY!
我们如何解决这个问题?
这一点很重要,因为没有自定义处理,我将被迫加倍步进,并将序列化的xml处理成XmlDocument来修复这个故障。是的,这是一个小故障。除了根元素之外,我可以解决其他问题。
我不是唯一需要知道如何做到这一点的人。
由于 Jaeden“Sifo Dyas”al'Raec Ruiner