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

C#处理XML替换自闭合标签空格后文件末尾新增空行的解决方法

问题原因

末尾新增空行是File.WriteAllLines方法的默认写入行为导致的:

  1. File.ReadAllLines读取文件时,会按换行符拆分内容为字符串数组,返回的数组最后一个元素是原文件的最终闭合标签</xades:SignedProperties>,原文件中这行末尾没有尾随换行符。
  2. File.WriteAllLines写入时,会给数组中每一个元素(包括最后一个元素)后面都追加系统默认的行终止符(Windows环境下为\r\n),相当于给原本没有尾换行的文件最后加了一个换行,视觉上就表现为文件末尾多了一个空行。

另外你贴出的代码里混入了多余的> Blockquote字符,实际运行时需要删除这部分无效内容,否则会报语法错误。

解决方法
  • 通用兼容方案(适配所有.NET版本)
    手动将处理后的行用换行符拼接为完整字符串,再调用File.WriteAllText写入。File.WriteAllText会原样写入传入的字符串,不会在内容末尾自动追加额外换行符:
var lines = File.ReadAllLines(@"D:\test.xml");
for (int i = 0; i < lines.Length; i++)
{
    if (lines[i].Contains(" />")) 
    {
        lines[i] = lines[i].Replace(" />", "/>");
    }
}
// 拼接为完整内容后写入,无额外尾换行
File.WriteAllText(@"D:\test.xml", string.Join(Environment.NewLine, lines));

额外优化提示

用纯文本替换的方式修改XML存在误改风险,如果标签属性值中恰好出现 />字符串,会被错误替换。更稳妥的处理方式是使用.NET内置的XML解析类(XDocument/XmlDocument)加载XML文件,配置输出格式后保存,能避免破坏XML结构。

内容的提问来源于stack exchange,提问作者M.Saeed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 08:27:24