0

wpf コントロールに xml ノードを表示したいので、タイプ T のオブジェクトを xml ノードに変換しようとしています。以下は linqpad スニペットです。私は次の作業を行っています。

[Serializable]
public class test {
public int int1  { get ; set ;}
public int int2 { get ; set ;} 
public string str1 { get ; set ;}
}

void Main()
{
test t1 = new test () ;
t1.int1 = 12 ;
t1.int2 = 23 ;
t1.str1 = "hello" ;


System.Xml.Serialization.XmlSerializer x = new  System.Xml.Serialization.XmlSerializer(t1.GetType());
StringWriter sww = new StringWriter();
 XmlWriter writer = XmlWriter.Create(sww);
 x.Serialize(writer, t1);
 var xml = sww.XmlSerializeToXElement (); 
 xml.Dump () ;

}

意図した結果が得られず、代わりにこれが得られます:

<StringWriter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <NewLine>
</NewLine>
</StringWriter>
4

1 に答える 1

2

を取得しようとしている場合はXElement、これxml.Rootが必要です。

System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(t1.GetType());
StringWriter sww = new StringWriter();
XmlWriter writer = XmlWriter.Create(sww);
x.Serialize(writer, t1);
var xml = XDocument.Parse(sww.ToString());
Console.WriteLine(xml.Root);

出力:

<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <int1>12</int1>
  <int2>23</int2>
  <str1>hello</str1>
</test>
于 2013-07-10T08:41:19.070 に答える