【发布时间】:2017-09-13 23:01:20
【问题描述】:
我有以下示例代码,它为 x86 和 x64 生成不同的输出。
class SampleSerializer
{
public static string Serialize(string[] samples)
{
var xmlDocument = string.Empty;
var xmlSerializer = new XmlSerializer(typeof(string[]));
using (var ms = new MemoryStream())
{
xmlSerializer.Serialize(
ms,
samples);
xmlDocument = Encoding.UTF8.GetString(ms.ToArray());
}
return xmlDocument;
}
}
class Program
{
static void Main(string[] args)
{
var samples = new string[] { };
var doc = SampleSerializer.Serialize(samples);
Console.WriteLine(doc);
}
}
当平台目标是 x86 时,输出是:
<?xml version="1.0"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
当平台目标为 x64 时,输出为:
<?xml version="1.0"?>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
您可以通过 Any CPU 和 Prefer 32-bit set 或 unset 实现相同的效果。
如果您仔细观察,xsi 和 xsd 命名空间的顺序是不同的。为什么会这样?我希望命名空间的顺序与平台无关。
【问题讨论】:
标签: c# .net xml serialization namespaces