5

以下のように定義されたクラスがあります。

[XmlRoot("ClassName")]
public class ClassName_0
{
    //stuff...
}

次に、次のような ClassName_0 のリストを作成します。

var myListInstance= new List<ClassName_0>();

これは、シリアル化に使用するコードです。

var ser = new XmlSerializer(typeof(List<ClassName_0>));
ser.Serialize(aWriterStream, myListInstance);

これは、逆シリアル化に使用するコードです。

var ser = new XmlSerializer(typeof(List<ClassName_0>));
var wrapper = ser.Deserialize(new StringReader(xml));

それを xml にシリアル化すると、結果の xml は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClassName_0 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ClassName_0>
        <stuff></stuff>
    </ClassName_0>
    <ClassName_0>
        <stuff></stuff>
    </ClassName_0>
</ArrayOfClassName_0>

以下をシリアル化し、ClassName_0 のリストとの間で逆シリアル化できる方法はありますか?

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClassName xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ClassName>
        <stuff></stuff>
    </ClassName>
    <ClassName>
        <stuff></stuff>
    </ClassName>
</ArrayOfClassName>

ありがとう!

4

4 に答える 4

1

これを試して :

XmlType(TypeName="ClassName")]
public class ClassName_0
{
    //stuff...
}
于 2013-07-19T08:18:43.087 に答える
0

Jan Peterの助けを借りて、最終的に解決しました。XmlRoot は、クラスに配置するのに不適切な属性でした。XmlType であるはずでした。XmlType を使用すると、目的の効果が得られます。

于 2013-07-19T08:16:41.007 に答える
0

ドキュメント ツリーのルートを作成すると、このルートには任意のオブジェクトのリストが含まれます。

[XmlRootAttribute("myDocument")]
public class myDocument
{
   [XmlArrayAttribute]
   publict ClassName[] ArrayOfClassName {get;set;}
}

[XmlType(TypeName="ClassName")]
public class ClassName 
{
   public string stuff {get;set;}
}
于 2016-09-16T06:51:24.287 に答える