我正在将“不寻常”的xml转换为字符串。我说不寻常,因为我使用.NET ChartSerializer来保存winforms图表状态:
var xml = new XmlDocument();
using (MemoryStream ms = new MemoryStream())
{
chart1.Serializer.Save(ms);
xml.Load(ms);
}
如果我使用
转换为字符串using (StringWriter sw = new StringWriter())
{
using (XmlTextWriter txt = new XmlTextWriter(sw))
{
xml.WriteTo(txt);
string str = sw.ToString();
fuse.c1 = str;
}
}
并将其保存到文件中(我已尝试过JSON,txt,xml),然后使用
转换回来var xml = new XmlDocument();
xml.LoadXml(fuse.c1);
using (MemoryStream ms = new MemoryStream())
{
xml.Save(ms);
chart1.Serializer.Load(ms);
}
我收到错误root element is missing
我不明白错误,因为我只是转换为字符串,然后再使用相同的类等。
我对xml不是很熟悉,有人能发现我的错误吗?我正在尝试保存多个winforms图表而不为每个图表添加.xml文件
示例xml:
<Chart Size="854, 215">
<Series>
<Series Name="Series1" Legend="Legend1" ChartArea="ChartArea1" Color="Orange" LegendText="% Change">
<Points>
<DataPoint YValues="10.3973534917773" />
<DataPoint XValue="0.2" YValues="8.37818721941151" />
<DataPoint XValue="0.4" YValues="5.57375277883594" />
**snip many more data points**
</Points>
</Series>
</Series>
<ChartAreas>
<ChartArea Name="ChartArea1">
</ChartArea>
</ChartAreas>
</Chart>
答案 0 :(得分:1)
您可以在评论中找到特定问题的答案 - 您需要回放信息流。
但值得注意的是,似乎有overloads接受TextWriter
和TextReader
,所以你可以用更少的仪式来做你正在做的事情。
要保存,您可以使用StringWriter
:
using (var writer = new StringWriter())
{
chart1.Serializer.Save(writer);
fuse.c1 = writer.ToString();
}
要重新加载,您可以使用StringReader
:
using (var reader = new StringReader(fuse.c1))
{
chart1.Serializer.Load(reader);
}