问题描述
我已经为此寻找了解决方案,但我发现的只是如何防止这种情况发生的问题。
XDocument xDoc;
public Form1()
{
InitializeComponent();
xDoc = new XDocument(new XElement("root",new XElement("data")));
}
private void textBox1_TextChanged(object sender,EventArgs e)
{
string input = textBox1.Text;
xDoc.Root.SetElementValue("data",input);
rtxtXPreview.Text = xDoc.ToString();
txtValuePreview.Text = xDoc.Root.Element("data").Value;
}
private void button1_Click(object sender,EventArgs e)
{
SaveAndLoad();
}
private void SaveAndLoad()
{
string datanodeValue;
xDoc.Save(path);
datanodeValue = xDoc.Descendants("data").First().Value;
txtValuePreview.Text = datanodeValue;
rtxtXPreview.Text = xDoc.ToString();
}
textBox1: 是数据元素的输入。
rtxtXPreview:是用于显示 XML 文本的富文本框。
txtValuePreview:是用于显示元素值的文本框。
问题是当我输入如下值时:
A
B
C
XML 显示良好的换行符,但是一旦我点击按钮,文档就会被保存,而没有这些。所以当我调试我的代码时,我发现字符 \n\r 被替换为 \n 所以我搜索了这个问题并找到了这个 code:
private void SaveAndLoadFixed()
{
string datanodeValue;
XmlWriterSettings xmlWriterSettings =
new XmlWriterSettings { NewLineHandling = NewLineHandling.None,Indent = true };
using (XmlWriter xmlWriter = XmlWriter.Create(path,xmlWriterSettings))
{
xDoc.Save(xmlWriter);
xmlWriter.Flush();
}
//xDoc.Save(path);
XElement xDatabaseElement;
using (XmlTextReader xmlTextReader = new XmlTextReader(path) { WhitespaceHandling = WhitespaceHandling.Significant })
{
xmlTextReader.MovetoContent();
xDatabaseElement = XElement.Load(xmlTextReader);
}
datanodeValue = xDatabaseElement.Descendants("data").First().Value;
txtValuePreview.Text = datanodeValue;
rtxtXPreview.Text = xDatabaseElement.ToString();
}
这很好用,但是为什么字符 \n\r
没有替换为 
因为当我尝试输入字符 <
或 >
时它被替换为 {{1} } & <
分别是?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)