2

外部から提供された XML ドキュメントをアプリケーションにインポートする必要があります。この文書は下手に書かれていますが、私が本当にできることではありません。

<?xml version="1.0" encoding="iso-8859-1"?>
<xml>
    <Items>
        <Property1 />
        <Property2 />
        ...
    </Items>
    <Items>
        <Property1 />
        <Property2 />
        ...
    </Items>
    ...
</xml>

これには をどのように使用すればよいXmlSerializerですか? XmlRoot(ElementName="xml")私が使用するクラスのセットアップや、基本クラスに配置するかどうかは問題ではないようです<xml xmlns=''>

編集:私が使用しているC#コードを追加しました

[XmlRoot(ElementName = "xml")]
public class Container
{
    public List<Items> Items { get; set; }
}

public class Items
{
    public short S1 { get; set; }
    public short S2 { get; set; }
    public short S3 { get; set; }
    public short S4 { get; set; }
    public short S5 { get; set; }
    public short S6 { get; set; }
    public short S7 { get; set; }
}

public class XMLImport
{
    public Container Data{ get; private set; }

    public static XMLImport DeSerializeFromFile(string fileName)
    {
        XMLImport import = new XMLImport();
        XmlSerializer serializer = new XmlSerializer(typeof(Container));
        using (StreamReader reader = new StreamReader(fileName))
            import.Data = (Container)serializer.Deserialize(reader);
        return import;
    }
}
4

2 に答える 2

5

各ノードにクラスItemsマップがあるとします。<Items>

public class Items
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}

Items次のようにリストを逆シリアル化できます。

var doc = XDocument.Parse(
    @"<?xml version=""1.0"" encoding=""iso-8859-1""?>
    <xml>
        <Items>
            <Property1 />
            <Property2 />
        </Items>
        <Items>
            <Property1 />
            <Property2 />
        </Items>
    </xml>");
var serializer = new XmlSerializer(typeof(List<Items>), new XmlRootAttribute("xml"));
List<Items> list = (List<Items>)serializer.Deserialize(doc.CreateReader());
于 2013-10-08T06:59:16.707 に答える
0

あなたのXMLのルートはリストではありません.xmlのルートは<xml>ノードです.その名前に混乱しているだけだと思います:)

次のリンクにアクセスしてください。多くの人から投票された多くの良い回答があります。

リンクは次のとおりです: XMLドキュメントを逆シリアル化する方法

Xml をオブジェクトに逆シリアル化する際のエラー - xmlns='' は想定されていませんでした

名前空間を外すだけです =:

[XmlRoot("xml"), XmlType("xml")] 
public class RegisterAccountResponse {...}
于 2013-10-08T06:46:00.503 に答える