将字符串写入XML文件而不进行格式化(C#)

时间:2011-05-13 12:06:36

标签: c# xml file whitespace

我写了一个函数,它根据我的应用程序中保存的数据构建XML字符串。 接下来,应将此字符串写入实际的XML文件,以便可以使用它。 然后,此文件将在HTML Web应用程序中用于提供数据。 我正在使用以下代码片段来做到这一点:

xmlDoc.Save("exercise.xml");

足够简单,但有一点小问题。 我的XML文件在Firefox中无法正常工作,因为它将空格视为childNode。 重写我的整个Web应用程序几乎是不行的,因为它的工作量太大了。 我宁愿能够以非格式化的方式将我的XML字符串保存到XML文件,因为我已经测试并确认它几乎适用于所有可想到的浏览器。 字符串本身不包含任何回车符或制表符,因此Save() - 方法可能会自动添加它。有什么方法可以阻止它这样做,或者另一种简单的方法来规避这个?

5 个答案:

答案 0 :(得分:9)

看一下这个XmlDocument.Save重载。 这是一个完整的代码示例,可以在没有空格缩进的情况下保存XML:

using (XmlWriter xw = XmlWriter.Create("exercise.xml", new XmlWriterSettings { Indent = false }))
    doc.Save(xw);

答案 1 :(得分:3)

尝试

xDoc.PreserveWhitespace = true;
xDoc.Save(...);

答案 2 :(得分:1)

你有一个包含工作xml的字符串,为什么你不能直接使用TextWriter / StreamWriter将其推送到文件?

答案 3 :(得分:1)

我承认我没有对此进行过测试,但希望这能为您提供最终解决方案的提示

var xws = new XmlWriterSettings
{ 
    Indent = false, 
    NewLineOnAttributes = false 
};

using (var xtw = XmlTextWriter.Create("exercise.xml", xws))
{
    xmlDoc.Save(xtw);
}

答案 4 :(得分:1)

您是否尝试过将自己构建的字符串写入文件?像这样:

var myXML= "<root><node>something something something dark side</node></root>";
var file = new System.IO.StreamWriter("c:\\file.xml");
file.WriteLine(myXML);
file.Close();