【发布时间】:2016-03-22 22:49:33
【问题描述】:
我正在尝试更新现有应用。 之前有人要求我简单地清理一个用于转义字符的 xml 文件,这些转义字符会在它们被拉入公司系统之前交给我们。这样做让我们可以选择避免在 7 年前编写的应用程序中进行编写并且工作正常(但零文档)
它实际上工作得很好
foreach (string d in Directory.GetFiles(test, "*.xml", SearchOption.AllDirectories))
{
String[] lines = File.ReadAllLines(d);
for (int i = 0; i < lines.Length; i++)
{
if (lines[i].Contains("&"))
{
i++;
}
//Replace incorrect characters
else if (lines[i].Contains("&"))
{
log.Info(saveName);
log.Error("Incorrect '&' Detected: Changing to '&'");
lines[i] = lines[i].Replace("&", "&");
log.Info(lines[i]);
}
}
System.IO.File.WriteAllLines(d, lines);
}
也许太容易了,因为我被要求尝试将其与主应用程序集成,以防止操作员不得不进行预清洁。
我知道(我相信)我在以下代码中缺少相应的System.IO.File.WriteAllLines(d, lines);,但我无法得到它或其他任何东西。
“替换”正在工作,因为 WriteLine 正在显示更正的行,但我无法让系统保存更改。
MemoryStream ms = new MemoryStream();
ms.Position = 0;
List<string> rows = new List<string>();
using (var reader = new StreamReader(ms))
{
string line;
var sw = new StreamWriter(ms);
while ((line = reader.ReadLine()) != null)
{
if (line.Contains("&"))
{
Console.WriteLine(line);
line = line.Replace("&", "&");
sw.Write(line);
Console.WriteLine(line);
}
}
【问题讨论】:
-
您永远不会将
MemoryStream保存到文件中。另外,如果line有多个&会怎样? -
这是我们所知道的其中之一。这是一个导入的集合列表组,但是客户的供应商的供应商进行了单方面的更改,并且这里的管理层认为让他们删除转义字符的 6 个月的麻烦是不值得的
-
流稍后被转换为字符串(被保存),但它没有保持 & 到 & 的变化
标签: c# xml filestream streamreader streamwriter