2017-08-10 58 views
0

我转换一个“不寻常” XML为字符串。我说的不寻常,因为我使用的.NET ChartSerializer保存的WinForms图表状态:如果我转换为使用转换XML字符串,然后再返回产生“根元素错误”

using (StringWriter sw = new StringWriter()) 
{ 
    using (XmlTextWriter txt = new XmlTextWriter(sw)) 
    { 
     xml.WriteTo(txt); 
     string str = sw.ToString(); 
     fuse.c1 = str; 
    } 
} 

字符串

var xml = new XmlDocument(); 
using (MemoryStream ms = new MemoryStream()) 
{ 
    chart1.Serializer.Save(ms); 
    xml.Load(ms); 
} 

,并将其保存到一个文件(我试过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> 
+0

*“我想保存多个图表的WinForms没有每个图表的.xml文件“*它是否适用于单个图表?你已经看过生成的文件吗? – grek40

+0

您能发送创建的xml文件的样本吗? – mahlatse

+0

如果我只是使用serializer.Save()然后我得到一个.xml文件,我确实可以将它加载回图表控件(.xml文件,而不是一个字符串,并返回)。如果我能让它与一个工作,我会为所有图表制作一个字符串[]。 – ferday

回答

1

你有答案的评论你的具体问题 - 你需要倒带流。

但值得注意的是,似乎有overloads接受TextWriterTextReader,所以你可以做你用少得多的仪式做什么。

要保存,你可以使用一个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); 
} 
+0

感谢,我现在在文本框中输入新的工具,简单的代码。很好 – ferday

相关问题