0

我有一个打开 XML 文件的打开文件对话框。正则表达式查找 和 之间的每个字符串><并将换行中的每个字符串写入富文本框。

private void button1_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        StreamReader sr = new StreamReader(openFileDialog1.FileName);
        string s = sr.ReadToEnd();
        richTextBox1.Text = s;
    }

    string txt = richTextBox1.Text;
    var foundWords = Regex.Matches(txt, @"(?<=>)([\w ]+?)(?=<)");
    richTextBox1.Text = string.Join("\n", foundWords.Cast<Match>().Select(x => x.Value).ToArray());
}

然后我可以更改这些字符串。但是如何将这些更改的字符串导入到原来的 XML 文件中?

4

1 回答 1

3

您可以尝试在文件中替换这些字符串,但是一旦您替换了不同长度的内容,只写整个文件会更简单。

看起来用户能够修改这些字符串 - 这是您面临的挑战:您必须跟踪原始文件中的哪个单词以将它们替换回数据中。此外,用户可以在文本框中删除或添加行,在这种情况下您的应用程序会做什么?

XDocument使用和存储XElement包含原始值的 s来处理 xml 文件会更容易。XDocument允许您替换这些值并存储文件。

请注意,由于您没有明确关闭StreamReader,因此当您尝试编写文件时,该文件可能仍在使用中。只需将其StreamReader放在一个using块中即可防止这种情况发生。

于 2013-11-10T12:33:47.247 回答