You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XAttribute写入XML时如何保留原CR换行格式?

保留XML属性中的原始换行格式(CR)

这个问题其实是.NET中XML序列化的默认行为导致的——当你用XDocument.Save()直接保存时,它会遵循XML规范,自动将属性值里的换行符转换为
(CR/LF的实体表示)。要保留KVP里的原始换行格式,你可以通过自定义XmlWriter的设置来实现。

解决方案步骤:

  • 创建XmlWriterSettings实例,设置NewLineHandling = NewlineHandling.None,这个配置会让XmlWriter完全保留原始的换行符,不做任何转换。
  • 使用这个配置创建XmlWriter,再将你的XDocument写入到文件中。

完整代码示例:

// 你的原始KVP
var kvpAttribute = new KeyValuePair<string,string>("rsaKey", @"----RSAKEY---- AWEACAWE123213AWEAWECAWE!AWEAWE
AWEAWEAWEAWEAWEQEAWEAWHYTAWEAAA
----END RSA KEY ----");

// 构建XML元素
var element = new XElement("add",
    new XAttribute("key", kvpAttribute.Key),
    new XAttribute("value", kvpAttribute.Value));
var doc = new XDocument(element);

// 配置XmlWriterSettings
var settings = new XmlWriterSettings
{
    NewLineHandling = NewlineHandling.None,
    Indent = true // 如果需要格式化XML可以保留,不需要的话设为false
};

// 使用XmlWriter保存文件
using (var writer = XmlWriter.Create("yourfile.xml", settings))
{
    doc.Save(writer);
}

为什么这个方法有效?

NewLineHandling.None会禁用XmlWriter对换行符的自动处理逻辑,它会原封不动地写入你KVP值里的所有字符,包括原始的CR换行符,不会将其转换为CRLF的实体引用。这样生成的XML属性值就会和你KVP里的原始格式完全一致了。

需要注意的是,虽然这个方法能保留原始换行,但你要确保读取该XML的程序能够正确解析这种格式——毕竟严格来说,XML属性里的换行符按照规范是会被处理的,但如果读取程序有特殊要求,这个方案就能满足你的需求。

内容的提问来源于stack exchange,提问作者Dannys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:14:45