我有一个打开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文件?
答案 0 :(得分:3)
您可以尝试在文件中替换这些字符串,但是一旦替换了不同长度的字符串,就可以更简单地编写整个文件。
用户似乎可以修改这些字符串 - 这就是您的挑战:您必须跟踪原始文件中的哪个单词将其替换回数据。此外,用户可以删除或添加文本框中的行,在这种情况下您的应用程序会做什么?
使用XDocument
处理xml文件会更容易,并存储包含原始值的XElement
。 XDocument
允许您替换这些值并存储文件。
请注意,由于您没有明确关闭StreamReader
,因此当您尝试编写该文件时,该文件可能仍在使用中。只需将StreamReader
放在using
块中即可阻止此操作。