2017-08-10 8 views
0

「異常な」xmlを文字列に変換しています。私は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); 
} 

と、ファイルに保存します(私が試した:私はリサイズにチャートの状態を保存するために、.NET ChartSerializerを使用しているように私は珍しいと言いますJSON、TXT、XML)、その後、私はエラーにroot element is missing

私を取得

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

を使用して戻って変換しますエラーを理解できません。単純に同じクラスを使用して文字列に変換して戻ってきます。

私はあまり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ファイル)に戻すことができます。もし私がそれを1つで動作させることができれば、私はすべてのグラフの文字列[]を作成します。 – ferday

答えて

1

:私は、各グラフのための.xmlファイルを使用せずに、複数のリサイズチャートを保存するために

サンプルXMLをしようとしていますストリーム。

しかし、それはあなたがはるかに少ない式典でやっているものを行うことができますので、TextWriterTextReaderを受け入れるoverloadsがあるように思われることは注目に値します。あなたが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

関連する問題