gpt4 book ai didi

xna - OmitXmlDeclaration 不适用于 XmlSerializer

转载 作者:数据小太阳 更新时间:2023-10-29 02:46:33 25 4
gpt4 key购买 nike

我一直在为基于图 block 的游戏开发 map 编辑器。我想加载 map 并将其保存到 xml 文件。

发现了 xmlSerializer 类并想尝试一下而不是构建我自己的解析器。这并不难弄清楚。我现在遇到的一个问题是我无法摆脱 xml 声明。似乎根本没有应用 XmlSettings。整晚都在乱搞,没有任何进展,非常感谢帮助。这是代码:

public static void SerializeMap(Array map) 
{
XmlWriterSettings xmlSettings = new XmlWriterSettings();
xmlSettings.OmitXmlDeclaration = true;
xmlSettings.ConformanceLevel = ConformanceLevel.Fragment;
xmlSettings.Indent = false;

var xmlSerializer = new XmlSerializer(typeof(Tile));


XmlSerializerNamespaces emptyNameSpace = new XmlSerializerNamespaces();
emptyNameSpace.Add("", "");

//create string of xml first, then write to file
StringWriter stringWriter = new StringWriter();

using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, xmlSettings))
{
for (int z = 0; z < map.GetLength(0); z++)
{
for (int x = 0; x < map.GetLength(1); x++)
{
for (int y = 0; y < map.GetLength(2); y++)
{
xmlSerializer.Serialize(stringWriter, map.GetValue(z, x, y), emptyNameSpace);
}
}
}
}

FileStream fs = new FileStream("Content/tiletest.xml", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);

sw.WriteLine(xmlText);

sw.Close();
fs.Close();
}

因为我在遍历对象,所以 xml 文件中每个新写入的对象都会附加一个 xml 声明,这会破坏 xml 格式。令人难以置信的烦人,因为其他一切都适用于序列化。

最佳答案

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

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

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

关于xna - OmitXmlDeclaration 不适用于 XmlSerializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com