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

发布于 2024-11-07 01:12:01 字数 403 浏览 0 评论 0原文

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

xmlDoc.Save("exercise.xml");

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

I wrote a function that builds an XML string based on the data saved in my application.
Next up, this string should be written to an actual XML file, so it can be used.
This file is then to be used in an HTML web application to feed data.
I'm using the following snippet of code to do just that:

xmlDoc.Save("exercise.xml");

Easy enough, but there's a small catch.
My XML file won't work properly in Firefox, because it considers white space as a childNode.
Rewriting my entire web application is pretty much a no go, as it'd be too much work.
I'd rather just be able to save my XML string to an XML file in a non-formatted way, since I've tested and confirmed that this works in just about every conceivable browser.
The string itself doesn't contain any carriage returns or tabs, so the Save()-method probably adds it automatically. Any way to prevent it from doing that, or another easy way to circumvent this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

羁绊已千年 2024-11-14 01:12:01

看一下这个 XmlDocument.Save 重载。
下面是一个完整的代码示例,它保存了没有空格缩进的 XML:

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

Take a look at this XmlDocument.Save overload.
Here's a complete code example that saves XML without whitespace indentation:

using (XmlWriter xw = XmlWriter.Create("exercise.xml", new XmlWriterSettings { Indent = false }))
    doc.Save(xw);
十级心震 2024-11-14 01:12:01

尝试

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

Try

xDoc.PreserveWhitespace = true;
xDoc.Save(...);
清浅ˋ旧时光 2024-11-14 01:12:01

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

You have a string containing working xml, why cant you just push it out to file directly using TextWriter/StreamWriter?

伤痕我心 2024-11-14 01:12:01

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

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

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

I admit I haven't tested this, but hopefully this gives you a hint towards the final solution

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

using (var xtw = XmlTextWriter.Create("exercise.xml", xws))
{
    xmlDoc.Save(xtw);
}
夢归不見 2024-11-14 01:12:01

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

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();

Have you tried just writing your string that you've built to a file? Something like this:

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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文