Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XmlSerializer在.NET3.5和;CF.NET 3.5_C#_.net_Xml_Serialization_Compact Framework - Fatal编程技术网

C# XmlSerializer在.NET3.5和;CF.NET 3.5

C# XmlSerializer在.NET3.5和;CF.NET 3.5,c#,.net,xml,serialization,compact-framework,C#,.net,Xml,Serialization,Compact Framework,我有一个库,它在CF.NET和.NET下运行,但序列化在两者之间有所不同。因此,在CF.NET下生成的XML文件在.NET下不可读,这对我来说是个大问题 下面是代码示例: [Serializable, XmlRoot("config")] public sealed class RemoteHost : IEquatable<RemoteHost> { // ... } public class Program { public static void Main()

我有一个库,它在CF.NET和.NET下运行,但序列化在两者之间有所不同。因此,在CF.NET下生成的XML文件在.NET下不可读,这对我来说是个大问题

下面是代码示例:

[Serializable, XmlRoot("config")]
public sealed class RemoteHost : IEquatable<RemoteHost>
{
    // ...
}

public class Program
{
    public static void Main()
    {
        RemoteHost host = new RemoteHost("A");
        List<RemoteHost> hosts = new List<RemoteHost>();
        hosts.Add(host);
        XmlSerializer ser = new XmlSerializer(typeof(List<RemoteHost>));
        ser.Serialize(Console.Out, hosts);
    }
}
[可序列化,XmlRoot(“配置”)]
公共密封类远程主机:IEquatable
{
// ...
}
公共课程
{
公共静态void Main()
{
RemoteHost主机=新的RemoteHost(“A”);
列表主机=新列表();
hosts.Add(主机);
XmlSerializer ser=新的XmlSerializer(typeof(List));
序列化(Console.Out、hosts);
}
}
CF.NET xml:

<?xml version="1.0"?>
<ArrayOfConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <config Name="A">
  </config>
</ArrayOfConfig>

.NETXML

<?xml version="1.0" encoding="ibm850"?>
<ArrayOfRemoteHost xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <RemoteHost Name="A">
  </RemoteHost>
</ArrayOfRemoteHost>


如何修改程序以生成相同的XML?

它看起来确实像是一个处理根名称的bug。解决方法:手动控制根目录:

[XmlRoot("foo")]
public class MyRoot {
    [XmlElement("bar")]
    public List<RemoteHost> Hosts {get;set;}
}
[XmlRoot(“foo”)]
公共类MyRoot{
[XmlElement(“条”)]
公共列表主机{get;set;}
}
这应该序列化为

<foo><bar>...</bar>...</foo>
。。。。。。
在两个站台上。用
foo
bar
替换您的首选名称


(就我个人而言,我会使用二进制输出;p)

arghhh。。。这样做,我需要重组我所有的商业模式。。。二进制输出?@Arnaud-仅仅在序列化点添加包装器并不能真正改变整个模型。