2017-08-10 62 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

相關問題