【发布时间】:2017-08-10 06:34:47
【问题描述】:
我正在将“不寻常”的 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不是很熟悉,谁能发现我的失误?我正在尝试为每个图表保存多个没有 .xml 文件的 winforms 图表
示例 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>
【问题讨论】:
-
“我正在尝试保存多个 winforms 图表,但每个图表都没有 .xml 文件” 它适用于单个图表吗?您是否已经查看了生成的文件?
-
可以把创建的xml文件的样本发过来吗?
-
如果我只使用 serializer.Save() 然后我得到一个 .xml 文件,我确实可以将它加载回图表控件(即 .xml 文件,不是字符串,然后返回)。如果我可以让它与一个一起工作,我将为所有图表制作一个字符串 []。
-
在
xml.Save(ms)和chart1.Serializer.Load(ms)调用之间尝试ms.Position = 0。流操作通常会在末尾留下流“光标”。 -
改用 XElement.Load 看看是否有帮助。您在提供的示例中缺少 xml 元素,普通 xml 以 xml 元素作为第一个元素开始。