Xna 忽略不使用XmlSerializer的XmlDeclaration

Xna 忽略不使用XmlSerializer的XmlDeclaration,xna,xml,serialization,Xna,Xml,Serialization,我一直在为一款基于平铺的游戏制作地图编辑器。我想将地图加载并保存到xml文件中 发现了xmlSerializer类,并想尝试一下,而不是构建自己的解析器。这不难理解。我现在面临的一个问题是,我无法摆脱xml声明。似乎根本没有应用XmlSettings。我们整晚都在忙,毫无进展,非常感谢您的帮助。代码如下: 公共静态映射(数组映射) { XmlWriterSettings=新的XmlWriterSettings(); xmlSettings.OmitXmlDeclaration=true; xm

我一直在为一款基于平铺的游戏制作地图编辑器。我想将地图加载并保存到xml文件中

发现了xmlSerializer类,并想尝试一下,而不是构建自己的解析器。这不难理解。我现在面临的一个问题是,我无法摆脱xml声明。似乎根本没有应用XmlSettings。我们整晚都在忙,毫无进展,非常感谢您的帮助。代码如下:

公共静态映射(数组映射)
{ 
XmlWriterSettings=新的XmlWriterSettings();
xmlSettings.OmitXmlDeclaration=true;
xmlSettings.ConformanceLevel=ConformanceLevel.Fragment;
xmlSettings.Indent=false;
var xmlSerializer=新的xmlSerializer(typeof(Tile));
XmlSerializerNamespaces emptyNameSpace=新的XmlSerializerNamespaces();
emptyNameSpace.Add(“,”);
//首先创建xml字符串,然后写入文件
StringWriter StringWriter=新StringWriter();
使用(XmlWriter=XmlWriter.Create(stringWriter,xmlSettings))
{ 
for(intz=0;z
因为我循环遍历对象,所以xml文件中的每个新写入对象都会附加一个xml声明,这将破坏xml格式。
非常烦人,因为其他一切都可以很好地进行序列化。

是的,不幸的是XmlSerializer不太一致,特别是在windows和xbox之间。这里有一个想法,使用内置的XnaContent序列化程序。这里有一个很好的教程介绍它:

或Microsoft提供的文档:

注意:上面链接的msdn页面上的社区内容引用了Shawn Hargreave关于该主题的优秀博客文章:


您正在将XmlWriterSettings结构传递给XmlWriter,但您没有在任何地方使用XmlWriter实例。 要解决此问题,请更改

xmlSerializer.Serialize(stringWriter, map.GetValue(z, x, y), emptyNameSpace);


很有趣,可能是个bug。出于好奇,你能用
List
而不是
Array
试试吗?您还可以在
StringWriter
FileStream
StreamReader
周围放置
块吗?最后,什么是
xmlText
?我不明白这是怎么定义的。
xmlSerializer.Serialize(xmlWriter, map.GetValue(z, x, y), emptyNameSpace);